Add minimal stock listing app: actions, Postgres schema, stocks page, Claude Agent SDK harness
- Add stocks table (server/db) with list/get/add/update/delete actions, scoped per user, backing both the chat agent and the /stocks UI via useActionQuery/useActionMutation - Add mobile-first /stocks page (shadcn table/cards, watchlist, search) and wire it into the sidebar, navigation state, and view-screen context - Install the platform's Claude Agent SDK harness (server/plugins, server/routes/api/claude-agent) so the app agent runs on the platform's own Claude subscription instead of the Builder.io gateway; fix the vendored turn.post.ts route to resolve the session and wrap it in runWithRequestContext, since custom /api/ routes aren't auto-wrapped in request context the way /_agent-native/actions/* are - Add shadcn table/badge/dialog/select components (Tabler icons, not lucide)
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
import { createGetDb } from "@agent-native/core/db";
|
||||
|
||||
import * as schema from "./schema.js";
|
||||
|
||||
export const getDb = createGetDb(schema);
|
||||
@@ -0,0 +1,22 @@
|
||||
import { integer, now, real, table, text } from "@agent-native/core/db/schema";
|
||||
|
||||
export const stocks = table("stocks", {
|
||||
id: text("id").primaryKey(),
|
||||
symbol: text("symbol").notNull(),
|
||||
companyName: text("company_name").notNull(),
|
||||
exchange: text("exchange").notNull().default("NASDAQ"),
|
||||
sector: text("sector"),
|
||||
currency: text("currency").notNull().default("USD"),
|
||||
price: real("price").notNull().default(0),
|
||||
changePercent: real("change_percent").notNull().default(0),
|
||||
marketCap: integer("market_cap"),
|
||||
watchlisted: integer("watchlisted", { mode: "boolean" })
|
||||
.notNull()
|
||||
.default(false),
|
||||
ownerEmail: text("owner_email").notNull(),
|
||||
createdAt: text("created_at").notNull().default(now()),
|
||||
updatedAt: text("updated_at").notNull().default(now()),
|
||||
});
|
||||
|
||||
export type Stock = typeof stocks.$inferSelect;
|
||||
export type NewStock = typeof stocks.$inferInsert;
|
||||
Reference in New Issue
Block a user