@axiom-lattice/lattice-cli 0.2.30 → 0.2.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.eslintrc.json CHANGED
@@ -17,6 +17,13 @@
17
17
  "semi": ["warn", "always"],
18
18
  "no-unused-vars": "off",
19
19
  "@typescript-eslint/no-unused-vars": ["warn"],
20
- "@typescript-eslint/no-explicit-any": "off"
20
+ "@typescript-eslint/no-explicit-any": "off",
21
+ "no-restricted-syntax": [
22
+ "error",
23
+ {
24
+ "selector": "ImportExpression[source.value='@axiom-lattice/core']",
25
+ "message": "Do not dynamically import @axiom-lattice/core: under a CJS host it resolves the ESM build and creates a SECOND module instance (separate store/model registries). Use a static top-level import."
26
+ }
27
+ ]
21
28
  }
22
29
  }
@@ -1,5 +1,5 @@
1
1
 
2
- > @axiom-lattice/lattice-cli@0.2.30 build /home/runner/work/agentic/agentic/packages/lattice-cli
2
+ > @axiom-lattice/lattice-cli@0.2.32 build /home/runner/work/agentic/agentic/packages/lattice-cli
3
3
  > tsup src/cli.ts --format esm --dts --sourcemap
4
4
 
5
5
  CLI Building entry: src/cli.ts
@@ -7,9 +7,9 @@
7
7
  CLI tsup v8.5.0
8
8
  CLI Target: es2020
9
9
  ESM Build start
10
- ESM dist/cli.js 9.82 KB
11
- ESM dist/cli.js.map 18.15 KB
12
- ESM ⚡️ Build success in 162ms
10
+ ESM dist/cli.js 9.67 KB
11
+ ESM dist/cli.js.map 17.89 KB
12
+ ESM ⚡️ Build success in 63ms
13
13
  DTS Build start
14
- DTS ⚡️ Build success in 13550ms
14
+ DTS ⚡️ Build success in 8566ms
15
15
  DTS dist/cli.d.ts 20.00 B
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @axiom-lattice/lattice-cli
2
2
 
3
+ ## 0.2.32
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [cb75780]
8
+ - Updated dependencies [c0f75e2]
9
+ - Updated dependencies [48e3ce3]
10
+ - Updated dependencies [3e923d0]
11
+ - Updated dependencies [99bf609]
12
+ - Updated dependencies [92bffbb]
13
+ - Updated dependencies [a19e0aa]
14
+ - @axiom-lattice/core@6.4.1
15
+ - @axiom-lattice/gateway@4.9.1
16
+ - @axiom-lattice/local-stores@3.2.5
17
+
18
+ ## 0.2.31
19
+
20
+ ### Patch Changes
21
+
22
+ - Updated dependencies [aa2d760]
23
+ - Updated dependencies [aa2d760]
24
+ - Updated dependencies [ad5a730]
25
+ - @axiom-lattice/gateway@4.9.0
26
+ - @axiom-lattice/core@6.4.0
27
+ - @axiom-lattice/protocols@4.8.0
28
+ - @axiom-lattice/local-stores@3.2.4
29
+
3
30
  ## 0.2.30
4
31
 
5
32
  ### Patch Changes
package/dist/cli.js CHANGED
@@ -5,7 +5,11 @@ import { LatticeGateway } from "@axiom-lattice/gateway";
5
5
  import {
6
6
  configureStores,
7
7
  sandboxLatticeManager,
8
- createSandboxProvider
8
+ createSandboxProvider,
9
+ registerScheduleLattice,
10
+ MemoryLatticeManager,
11
+ registerCheckpointSaver,
12
+ getStoreLattice
9
13
  } from "@axiom-lattice/core";
10
14
  import {
11
15
  createLocalStoreConfig,
@@ -77,7 +81,6 @@ async function startServer(options) {
77
81
  await configureStores(stores, { autoDisposeStores: true });
78
82
  if (schedule) {
79
83
  try {
80
- const { registerScheduleLattice } = await import("@axiom-lattice/core");
81
84
  registerScheduleLattice("default", {
82
85
  name: "Default Scheduler",
83
86
  description: "Local schedule storage",
@@ -89,7 +92,6 @@ async function startServer(options) {
89
92
  }
90
93
  if (checkpoint) {
91
94
  try {
92
- const { MemoryLatticeManager, registerCheckpointSaver } = await import("@axiom-lattice/core");
93
95
  MemoryLatticeManager.getInstance().removeCheckpointSaver("default");
94
96
  registerCheckpointSaver("default", checkpoint);
95
97
  console.log("[store] Checkpoint saver registered");
@@ -99,7 +101,6 @@ async function startServer(options) {
99
101
  }
100
102
  console.log("[store] Local SQLite stores ready");
101
103
  try {
102
- const { getStoreLattice } = await import("@axiom-lattice/core");
103
104
  const tenantId = "default";
104
105
  const tenantStore = getStoreLattice("default", "tenant").store;
105
106
  const existingTenant = await tenantStore.getTenantById(tenantId).catch(() => null);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server.ts","../src/cli.ts"],"sourcesContent":["import { LatticeGateway } from \"@axiom-lattice/gateway\";\nimport {\n configureStores,\n sandboxLatticeManager,\n createSandboxProvider,\n} from \"@axiom-lattice/core\";\nimport {\n createLocalStoreConfig,\n closeDatabase,\n initDatabase,\n} from \"@axiom-lattice/local-stores\";\nimport { LoggerType } from \"@axiom-lattice/protocols\";\nimport type { LoggerConfig } from \"@axiom-lattice/protocols\";\nimport type { DatabaseWrapper } from \"@axiom-lattice/local-stores\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport interface LatticeCliOptions {\n port: number;\n dbPath: string;\n sandboxBasePath: string;\n serveWeb: boolean;\n}\n\nfunction resolveWebDir(): string | null {\n // Look for apps/cli-web/dist (Vite build output)\n const repoRoot = path.resolve(__dirname, \"..\", \"..\", \"..\", \"apps\", \"cli-web\", \"dist\");\n if (fs.existsSync(repoRoot)) return repoRoot;\n return null;\n}\n\n/**\n * Fallback: create all local stores manually without checkpoint saver.\n * Used when createLocalStoreConfig fails due to better-sqlite3 not being available.\n */\nasync function createStoresFallback(\n db: DatabaseWrapper\n): Promise<Record<string, unknown>> {\n const mod = await import(\"@axiom-lattice/local-stores\");\n return {\n thread: new mod.LocalThreadStore(db),\n assistant: new mod.LocalAssistantStore(db),\n workspace: new mod.LocalWorkspaceStore(db),\n project: new mod.LocalProjectStore(db),\n user: new mod.LocalUserStore(db),\n tenant: new mod.LocalTenantStore(db),\n userTenantLink: new mod.LocalUserTenantLinkStore(db),\n database: new mod.LocalDatabaseConfigStore(db),\n metrics: new mod.LocalMetricsServerConfigStore(db),\n mcp: new mod.LocalMcpServerConfigStore(db),\n workflowTracking: new mod.LocalWorkflowTrackingStore(db),\n eval: new mod.LocalEvalStore(db),\n channelBinding: new mod.LocalChannelBindingStore(db),\n channelInstallation: new mod.LocalChannelInstallationStore(db),\n a2aApiKey: new mod.LocalA2AApiKeyStore(db),\n threadMessageQueue: new mod.LocalThreadMessageQueueStore(db),\n skill: new mod.LocalSkillStore(db),\n schedule: new mod.LocalScheduleStorage(db),\n };\n}\n\nexport async function startServer(options: LatticeCliOptions): Promise<void> {\n console.log(`\n╔═══════════════════════════════════════════╗\n║ Lattice Local Server ║\n║ Version: 0.1.0 ║\n║ Sandbox: local ║\n║ Stores: sqlite (sql.js) ║\n╚═══════════════════════════════════════════╝\n`);\n\n // 1. Initialize local SQLite stores\n console.log(`[store] Initializing local stores at ${options.dbPath} ...`);\n\n let stores: Record<string, unknown>;\n let checkpoint: unknown = undefined;\n\n try {\n const result = await createLocalStoreConfig({ dbPath: options.dbPath });\n stores = result as unknown as Record<string, unknown>;\n } catch (e: unknown) {\n const msg = e instanceof Error ? e.message : String(e);\n if (msg.includes(\"better_sqlite3\") || msg.includes(\"bindings\")) {\n console.log(\"[store] better-sqlite3 unavailable, skipping checkpoint saver\");\n const db = await initDatabase({ dbPath: options.dbPath });\n stores = await createStoresFallback(db);\n } else {\n throw e;\n }\n }\n\n // Extract special keys\n const schedule = stores.schedule;\n checkpoint = stores.checkpoint;\n delete stores.schedule;\n delete stores.checkpoint;\n\n await configureStores(stores as Parameters<typeof configureStores>[0], { autoDisposeStores: true });\n\n // Register schedule storage\n if (schedule) {\n try {\n const { registerScheduleLattice } = await import(\"@axiom-lattice/core\");\n registerScheduleLattice(\"default\", {\n name: \"Default Scheduler\",\n description: \"Local schedule storage\",\n type: \"postgres\" as never,\n storage: schedule as never,\n });\n } catch { /* non-critical */ }\n }\n\n // Register checkpoint saver\n if (checkpoint) {\n try {\n const { MemoryLatticeManager, registerCheckpointSaver } = await import(\"@axiom-lattice/core\");\n MemoryLatticeManager.getInstance().removeCheckpointSaver(\"default\");\n registerCheckpointSaver(\"default\", checkpoint as Parameters<typeof registerCheckpointSaver>[1]);\n console.log(\"[store] Checkpoint saver registered\");\n } catch (e) {\n console.log(\"[store] Checkpoint saver skipped:\", e instanceof Error ? e.message : e);\n }\n }\n\n console.log(\"[store] Local SQLite stores ready\");\n\n // Seed default tenant, workspace, and project so the UI works out of the box\n try {\n const { getStoreLattice } = await import(\"@axiom-lattice/core\");\n\n const tenantId = \"default\";\n\n // Ensure default tenant exists\n const tenantStore = getStoreLattice(\"default\", \"tenant\").store as {\n getTenantById(id: string): Promise<unknown>;\n createTenant(id: string, data: { name: string }): Promise<unknown>;\n };\n const existingTenant = await tenantStore.getTenantById(tenantId).catch(() => null);\n if (!existingTenant) {\n await tenantStore.createTenant(tenantId, { name: \"Default\" });\n }\n\n // Ensure default user exists (onboarding will update the name)\n const userId = \"local\";\n const userStore = getStoreLattice(\"default\", \"user\").store as {\n getUserById(id: string): Promise<unknown>;\n createUser(id: string, data: { name: string; email: string }): Promise<unknown>;\n };\n const existingUser = await userStore.getUserById(userId).catch(() => null);\n if (!existingUser) {\n await userStore.createUser(userId, { name: \"Local User\", email: \"local@local\" });\n }\n\n // Ensure default workspace + project exist\n const wsStore = getStoreLattice(\"default\", \"workspace\").store as {\n getAllWorkspaces(tenantId: string): Promise<{ id: string }[]>;\n createWorkspace(tenantId: string, id: string, data: { name: string; storageType: string }): Promise<unknown>;\n };\n const pjStore = getStoreLattice(\"default\", \"project\").store as {\n getProjectsByWorkspace(tenantId: string, workspaceId: string): Promise<{ id: string }[]>;\n createProject(tenantId: string, workspaceId: string, id: string, data: { name: string }): Promise<unknown>;\n };\n const wss = await wsStore.getAllWorkspaces(tenantId);\n if (wss.length === 0) {\n const wsId = crypto.randomUUID();\n await wsStore.createWorkspace(tenantId, wsId, { name: \"Default\", storageType: \"sandbox\" });\n await pjStore.createProject(tenantId, wsId, crypto.randomUUID(), { name: \"Default Project\" });\n }\n\n // Ensure default assistant exists (model must be registered first via onboarding)\n const asStore = getStoreLattice(\"default\", \"assistant\").store as {\n getAssistantById(tenantId: string, id: string): Promise<unknown>;\n createAssistant(tenantId: string, id: string, data: { name: string; graphDefinition: unknown }): Promise<unknown>;\n };\n const existingAssistant = await asStore.getAssistantById(tenantId, \"default-assistant\").catch(() => null);\n if (!existingAssistant) {\n await asStore.createAssistant(tenantId, \"default-assistant\", {\n name: \"Default Assistant\",\n graphDefinition: {\n key: \"default-assistant\",\n type: \"react\",\n prompt: \"You are a helpful assistant.\",\n modelKey: \"default\",\n tools: [],\n },\n });\n }\n console.log(\"[store] Seeded tenant, user, workspace, project, and assistant\");\n } catch (e) {\n console.log(\"[store] Seed skipped:\", e instanceof Error ? e.message : e);\n }\n\n // 2. Register local sandbox provider\n console.log(`[sandbox] Initializing local sandbox at ${options.sandboxBasePath} ...`);\n const sandboxProvider = createSandboxProvider({\n type: \"local\",\n localSandboxBasePath: options.sandboxBasePath,\n });\n sandboxLatticeManager.registerLattice(\"default\", sandboxProvider);\n console.log(\"[sandbox] Local sandbox provider registered\");\n\n // 3. Swagger setup\n await LatticeGateway.configureSwagger(LatticeGateway.app);\n console.log(`[web] API docs: http://localhost:${options.port}/api-docs`);\n\n // 4. Serve web UI if requested\n if (options.serveWeb) {\n const webDir = resolveWebDir();\n if (webDir) {\n console.log(`[web] Serving chat UI from ${webDir}`);\n\n // SPA fallback: serve index.html for paths without an extension\n LatticeGateway.app.setNotFoundHandler((req, reply) => {\n if ((req.url || \"/\").startsWith(\"/api\")) {\n return reply.status(404).send({ success: false, error: \"Not found\" });\n }\n return reply.type(\"text/html\").send(fs.readFileSync(path.join(webDir, \"index.html\"), \"utf-8\"));\n });\n\n // Serve static assets\n LatticeGateway.app.get(\"/assets/*\", (req, reply) => {\n const p = (req.url || \"\").split(\"?\")[0].replace(/^\\/+/, \"\");\n const filePath = path.join(webDir, p);\n if (!fs.existsSync(filePath)) return reply.status(404).send(\"Not found\");\n const ext = path.extname(filePath);\n const ct: Record<string, string> = { \".js\": \"application/javascript\", \".css\": \"text/css\", \".svg\": \"image/svg+xml\", \".png\": \"image/png\", \".ico\": \"image/x-icon\", \".json\": \"application/json\" };\n return reply.type(ct[ext] || \"application/octet-stream\").send(fs.readFileSync(filePath));\n });\n\n console.log(`[web] Chat UI: http://localhost:${options.port}`);\n } else {\n console.log(\"[web] Web UI files not found (build apps/cli-web first: cd apps/cli-web && pnpm build)\");\n }\n }\n\n // 5. Start gateway\n const DEFAULT_LOGGER_CONFIG: LoggerConfig = {\n name: \"default\",\n description: \"Lattice CLI local server\",\n type: LoggerType.PINO,\n serviceName: \"lattice/cli\",\n loggerName: \"lattice/cli\",\n };\n\n LatticeGateway.startAsHttpEndpoint({\n port: options.port,\n queueServiceConfig: { type: \"memory\", defaultStartPollingQueue: true },\n loggerConfig: DEFAULT_LOGGER_CONFIG,\n });\n\n // Graceful shutdown\n const shutdown = async () => {\n console.log(\"\\n[shutdown] Closing database and stopping server...\");\n closeDatabase();\n await LatticeGateway.app.close();\n process.exit(0);\n };\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n}\n","#!/usr/bin/env node\nimport { startServer, type LatticeCliOptions } from \"./server.js\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\n\nfunction printHelp(): void {\n console.log(`\nlattice — Axiom Lattice local development server\n\nUsage:\n lattice [options]\n\nOptions:\n --port, -p <number> Server port (default: 4001)\n --db-path <path> SQLite database path (default: ~/.axiom/lattice.db)\n --sandbox-path <path> Sandbox base directory (default: ~/.axiom-local-sandbox)\n --web, -w Serve the chat web UI at /\n --help, -h Show this help\n\nExamples:\n lattice Start API-only on port 4001\n lattice --web Start with chat UI\n lattice -p 3000 --web Custom port with web UI\n lattice --db-path ./dev.db Custom database path\n`);\n}\n\nfunction parseArgs(): LatticeCliOptions | null {\n const args = process.argv.slice(2);\n\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n printHelp();\n return null;\n }\n\n const getArg = (flag: string): string | undefined => {\n const idx = args.findIndex((a) => a === flag);\n return idx !== -1 && args[idx + 1] ? args[idx + 1] : undefined;\n };\n\n const hasFlag = (flag: string): boolean => args.includes(flag);\n\n const portStr = getArg(\"--port\") ?? getArg(\"-p\");\n const port = portStr ? parseInt(portStr, 10) : 4001;\n\n return {\n port,\n dbPath: getArg(\"--db-path\") ?? path.join(os.homedir(), \".axiom\", \"lattice.db\"),\n sandboxBasePath: getArg(\"--sandbox-path\") ?? path.join(os.homedir(), \".axiom-local-sandbox\"),\n serveWeb: hasFlag(\"--web\") || hasFlag(\"-w\"),\n };\n}\n\nasync function main(): Promise<void> {\n const options = parseArgs();\n if (!options) return; // help printed\n\n try {\n await startServer(options);\n } catch (err) {\n console.error(\"Failed to start server:\", err);\n process.exit(1);\n }\n}\n\nmain();\n"],"mappings":";;;AAAA,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB;AAG3B,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,SAAS,qBAAqB;AAE9B,IAAM,YAAiB,aAAQ,cAAc,YAAY,GAAG,CAAC;AAS7D,SAAS,gBAA+B;AAEtC,QAAM,WAAgB,aAAQ,WAAW,MAAM,MAAM,MAAM,QAAQ,WAAW,MAAM;AACpF,MAAO,cAAW,QAAQ,EAAG,QAAO;AACpC,SAAO;AACT;AAMA,eAAe,qBACb,IACkC;AAClC,QAAM,MAAM,MAAM,OAAO,6BAA6B;AACtD,SAAO;AAAA,IACL,QAAQ,IAAI,IAAI,iBAAiB,EAAE;AAAA,IACnC,WAAW,IAAI,IAAI,oBAAoB,EAAE;AAAA,IACzC,WAAW,IAAI,IAAI,oBAAoB,EAAE;AAAA,IACzC,SAAS,IAAI,IAAI,kBAAkB,EAAE;AAAA,IACrC,MAAM,IAAI,IAAI,eAAe,EAAE;AAAA,IAC/B,QAAQ,IAAI,IAAI,iBAAiB,EAAE;AAAA,IACnC,gBAAgB,IAAI,IAAI,yBAAyB,EAAE;AAAA,IACnD,UAAU,IAAI,IAAI,yBAAyB,EAAE;AAAA,IAC7C,SAAS,IAAI,IAAI,8BAA8B,EAAE;AAAA,IACjD,KAAK,IAAI,IAAI,0BAA0B,EAAE;AAAA,IACzC,kBAAkB,IAAI,IAAI,2BAA2B,EAAE;AAAA,IACvD,MAAM,IAAI,IAAI,eAAe,EAAE;AAAA,IAC/B,gBAAgB,IAAI,IAAI,yBAAyB,EAAE;AAAA,IACnD,qBAAqB,IAAI,IAAI,8BAA8B,EAAE;AAAA,IAC7D,WAAW,IAAI,IAAI,oBAAoB,EAAE;AAAA,IACzC,oBAAoB,IAAI,IAAI,6BAA6B,EAAE;AAAA,IAC3D,OAAO,IAAI,IAAI,gBAAgB,EAAE;AAAA,IACjC,UAAU,IAAI,IAAI,qBAAqB,EAAE;AAAA,EAC3C;AACF;AAEA,eAAsB,YAAY,SAA2C;AAC3E,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAOb;AAGC,UAAQ,IAAI,wCAAwC,QAAQ,MAAM,MAAM;AAExE,MAAI;AACJ,MAAI,aAAsB;AAE1B,MAAI;AACF,UAAM,SAAS,MAAM,uBAAuB,EAAE,QAAQ,QAAQ,OAAO,CAAC;AACtE,aAAS;AAAA,EACX,SAAS,GAAY;AACnB,UAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,QAAI,IAAI,SAAS,gBAAgB,KAAK,IAAI,SAAS,UAAU,GAAG;AAC9D,cAAQ,IAAI,+DAA+D;AAC3E,YAAM,KAAK,MAAM,aAAa,EAAE,QAAQ,QAAQ,OAAO,CAAC;AACxD,eAAS,MAAM,qBAAqB,EAAE;AAAA,IACxC,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF;AAGA,QAAM,WAAW,OAAO;AACxB,eAAa,OAAO;AACpB,SAAO,OAAO;AACd,SAAO,OAAO;AAEd,QAAM,gBAAgB,QAAiD,EAAE,mBAAmB,KAAK,CAAC;AAGlG,MAAI,UAAU;AACZ,QAAI;AACF,YAAM,EAAE,wBAAwB,IAAI,MAAM,OAAO,qBAAqB;AACtE,8BAAwB,WAAW;AAAA,QACjC,MAAM;AAAA,QACN,aAAa;AAAA,QACb,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH,QAAQ;AAAA,IAAqB;AAAA,EAC/B;AAGA,MAAI,YAAY;AACd,QAAI;AACF,YAAM,EAAE,sBAAsB,wBAAwB,IAAI,MAAM,OAAO,qBAAqB;AAC5F,2BAAqB,YAAY,EAAE,sBAAsB,SAAS;AAClE,8BAAwB,WAAW,UAA2D;AAC9F,cAAQ,IAAI,qCAAqC;AAAA,IACnD,SAAS,GAAG;AACV,cAAQ,IAAI,qCAAqC,aAAa,QAAQ,EAAE,UAAU,CAAC;AAAA,IACrF;AAAA,EACF;AAEA,UAAQ,IAAI,mCAAmC;AAG/C,MAAI;AACF,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,qBAAqB;AAE9D,UAAM,WAAW;AAGjB,UAAM,cAAc,gBAAgB,WAAW,QAAQ,EAAE;AAIzD,UAAM,iBAAiB,MAAM,YAAY,cAAc,QAAQ,EAAE,MAAM,MAAM,IAAI;AACjF,QAAI,CAAC,gBAAgB;AACnB,YAAM,YAAY,aAAa,UAAU,EAAE,MAAM,UAAU,CAAC;AAAA,IAC9D;AAGA,UAAM,SAAS;AACf,UAAM,YAAY,gBAAgB,WAAW,MAAM,EAAE;AAIrD,UAAM,eAAe,MAAM,UAAU,YAAY,MAAM,EAAE,MAAM,MAAM,IAAI;AACzE,QAAI,CAAC,cAAc;AACjB,YAAM,UAAU,WAAW,QAAQ,EAAE,MAAM,cAAc,OAAO,cAAc,CAAC;AAAA,IACjF;AAGA,UAAM,UAAU,gBAAgB,WAAW,WAAW,EAAE;AAIxD,UAAM,UAAU,gBAAgB,WAAW,SAAS,EAAE;AAItD,UAAM,MAAM,MAAM,QAAQ,iBAAiB,QAAQ;AACnD,QAAI,IAAI,WAAW,GAAG;AACpB,YAAM,OAAO,OAAO,WAAW;AAC/B,YAAM,QAAQ,gBAAgB,UAAU,MAAM,EAAE,MAAM,WAAW,aAAa,UAAU,CAAC;AACzF,YAAM,QAAQ,cAAc,UAAU,MAAM,OAAO,WAAW,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAAA,IAC9F;AAGA,UAAM,UAAU,gBAAgB,WAAW,WAAW,EAAE;AAIxD,UAAM,oBAAoB,MAAM,QAAQ,iBAAiB,UAAU,mBAAmB,EAAE,MAAM,MAAM,IAAI;AACxG,QAAI,CAAC,mBAAmB;AACtB,YAAM,QAAQ,gBAAgB,UAAU,qBAAqB;AAAA,QAC3D,MAAM;AAAA,QACN,iBAAiB;AAAA,UACf,KAAK;AAAA,UACL,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,OAAO,CAAC;AAAA,QACV;AAAA,MACF,CAAC;AAAA,IACH;AACA,YAAQ,IAAI,gEAAgE;AAAA,EAC9E,SAAS,GAAG;AACV,YAAQ,IAAI,yBAAyB,aAAa,QAAQ,EAAE,UAAU,CAAC;AAAA,EACzE;AAGA,UAAQ,IAAI,2CAA2C,QAAQ,eAAe,MAAM;AACpF,QAAM,kBAAkB,sBAAsB;AAAA,IAC5C,MAAM;AAAA,IACN,sBAAsB,QAAQ;AAAA,EAChC,CAAC;AACD,wBAAsB,gBAAgB,WAAW,eAAe;AAChE,UAAQ,IAAI,6CAA6C;AAGzD,QAAM,eAAe,iBAAiB,eAAe,GAAG;AACxD,UAAQ,IAAI,oCAAoC,QAAQ,IAAI,WAAW;AAGvE,MAAI,QAAQ,UAAU;AACpB,UAAM,SAAS,cAAc;AAC7B,QAAI,QAAQ;AACV,cAAQ,IAAI,8BAA8B,MAAM,EAAE;AAGlD,qBAAe,IAAI,mBAAmB,CAAC,KAAK,UAAU;AACpD,aAAK,IAAI,OAAO,KAAK,WAAW,MAAM,GAAG;AACvC,iBAAO,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,OAAO,OAAO,YAAY,CAAC;AAAA,QACtE;AACA,eAAO,MAAM,KAAK,WAAW,EAAE,KAAQ,gBAAkB,UAAK,QAAQ,YAAY,GAAG,OAAO,CAAC;AAAA,MAC/F,CAAC;AAGD,qBAAe,IAAI,IAAI,aAAa,CAAC,KAAK,UAAU;AAClD,cAAM,KAAK,IAAI,OAAO,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,QAAQ,QAAQ,EAAE;AAC1D,cAAM,WAAgB,UAAK,QAAQ,CAAC;AACpC,YAAI,CAAI,cAAW,QAAQ,EAAG,QAAO,MAAM,OAAO,GAAG,EAAE,KAAK,WAAW;AACvE,cAAM,MAAW,aAAQ,QAAQ;AACjC,cAAM,KAA6B,EAAE,OAAO,0BAA0B,QAAQ,YAAY,QAAQ,iBAAiB,QAAQ,aAAa,QAAQ,gBAAgB,SAAS,mBAAmB;AAC5L,eAAO,MAAM,KAAK,GAAG,GAAG,KAAK,0BAA0B,EAAE,KAAQ,gBAAa,QAAQ,CAAC;AAAA,MACzF,CAAC;AAED,cAAQ,IAAI,oCAAoC,QAAQ,IAAI,EAAE;AAAA,IAChE,OAAO;AACL,cAAQ,IAAI,wFAAwF;AAAA,IACtG;AAAA,EACF;AAGA,QAAM,wBAAsC;AAAA,IAC1C,MAAM;AAAA,IACN,aAAa;AAAA,IACb,MAAM,WAAW;AAAA,IACjB,aAAa;AAAA,IACb,YAAY;AAAA,EACd;AAEA,iBAAe,oBAAoB;AAAA,IACjC,MAAM,QAAQ;AAAA,IACd,oBAAoB,EAAE,MAAM,UAAU,0BAA0B,KAAK;AAAA,IACrE,cAAc;AAAA,EAChB,CAAC;AAGD,QAAM,WAAW,YAAY;AAC3B,YAAQ,IAAI,sDAAsD;AAClE,kBAAc;AACd,UAAM,eAAe,IAAI,MAAM;AAC/B,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,GAAG,UAAU,QAAQ;AAC7B,UAAQ,GAAG,WAAW,QAAQ;AAChC;;;ACrQA,YAAY,QAAQ;AACpB,YAAYA,WAAU;AAEtB,SAAS,YAAkB;AACzB,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAkBb;AACD;AAEA,SAAS,YAAsC;AAC7C,QAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AAEjC,MAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,IAAI,GAAG;AAClD,cAAU;AACV,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,CAAC,SAAqC;AACnD,UAAM,MAAM,KAAK,UAAU,CAAC,MAAM,MAAM,IAAI;AAC5C,WAAO,QAAQ,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;AAAA,EACvD;AAEA,QAAM,UAAU,CAAC,SAA0B,KAAK,SAAS,IAAI;AAE7D,QAAM,UAAU,OAAO,QAAQ,KAAK,OAAO,IAAI;AAC/C,QAAM,OAAO,UAAU,SAAS,SAAS,EAAE,IAAI;AAE/C,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,OAAO,WAAW,KAAU,WAAQ,WAAQ,GAAG,UAAU,YAAY;AAAA,IAC7E,iBAAiB,OAAO,gBAAgB,KAAU,WAAQ,WAAQ,GAAG,sBAAsB;AAAA,IAC3F,UAAU,QAAQ,OAAO,KAAK,QAAQ,IAAI;AAAA,EAC5C;AACF;AAEA,eAAe,OAAsB;AACnC,QAAM,UAAU,UAAU;AAC1B,MAAI,CAAC,QAAS;AAEd,MAAI;AACF,UAAM,YAAY,OAAO;AAAA,EAC3B,SAAS,KAAK;AACZ,YAAQ,MAAM,2BAA2B,GAAG;AAC5C,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,KAAK;","names":["path"]}
1
+ {"version":3,"sources":["../src/server.ts","../src/cli.ts"],"sourcesContent":["import { LatticeGateway } from \"@axiom-lattice/gateway\";\nimport {\n configureStores,\n sandboxLatticeManager,\n createSandboxProvider,\n registerScheduleLattice,\n MemoryLatticeManager,\n registerCheckpointSaver,\n getStoreLattice,\n} from \"@axiom-lattice/core\";\nimport {\n createLocalStoreConfig,\n closeDatabase,\n initDatabase,\n} from \"@axiom-lattice/local-stores\";\nimport { LoggerType } from \"@axiom-lattice/protocols\";\nimport type { LoggerConfig } from \"@axiom-lattice/protocols\";\nimport type { DatabaseWrapper } from \"@axiom-lattice/local-stores\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport interface LatticeCliOptions {\n port: number;\n dbPath: string;\n sandboxBasePath: string;\n serveWeb: boolean;\n}\n\nfunction resolveWebDir(): string | null {\n // Look for apps/cli-web/dist (Vite build output)\n const repoRoot = path.resolve(__dirname, \"..\", \"..\", \"..\", \"apps\", \"cli-web\", \"dist\");\n if (fs.existsSync(repoRoot)) return repoRoot;\n return null;\n}\n\n/**\n * Fallback: create all local stores manually without checkpoint saver.\n * Used when createLocalStoreConfig fails due to better-sqlite3 not being available.\n */\nasync function createStoresFallback(\n db: DatabaseWrapper\n): Promise<Record<string, unknown>> {\n const mod = await import(\"@axiom-lattice/local-stores\");\n return {\n thread: new mod.LocalThreadStore(db),\n assistant: new mod.LocalAssistantStore(db),\n workspace: new mod.LocalWorkspaceStore(db),\n project: new mod.LocalProjectStore(db),\n user: new mod.LocalUserStore(db),\n tenant: new mod.LocalTenantStore(db),\n userTenantLink: new mod.LocalUserTenantLinkStore(db),\n database: new mod.LocalDatabaseConfigStore(db),\n metrics: new mod.LocalMetricsServerConfigStore(db),\n mcp: new mod.LocalMcpServerConfigStore(db),\n workflowTracking: new mod.LocalWorkflowTrackingStore(db),\n eval: new mod.LocalEvalStore(db),\n channelBinding: new mod.LocalChannelBindingStore(db),\n channelInstallation: new mod.LocalChannelInstallationStore(db),\n a2aApiKey: new mod.LocalA2AApiKeyStore(db),\n threadMessageQueue: new mod.LocalThreadMessageQueueStore(db),\n skill: new mod.LocalSkillStore(db),\n schedule: new mod.LocalScheduleStorage(db),\n };\n}\n\nexport async function startServer(options: LatticeCliOptions): Promise<void> {\n console.log(`\n╔═══════════════════════════════════════════╗\n║ Lattice Local Server ║\n║ Version: 0.1.0 ║\n║ Sandbox: local ║\n║ Stores: sqlite (sql.js) ║\n╚═══════════════════════════════════════════╝\n`);\n\n // 1. Initialize local SQLite stores\n console.log(`[store] Initializing local stores at ${options.dbPath} ...`);\n\n let stores: Record<string, unknown>;\n let checkpoint: unknown = undefined;\n\n try {\n const result = await createLocalStoreConfig({ dbPath: options.dbPath });\n stores = result as unknown as Record<string, unknown>;\n } catch (e: unknown) {\n const msg = e instanceof Error ? e.message : String(e);\n if (msg.includes(\"better_sqlite3\") || msg.includes(\"bindings\")) {\n console.log(\"[store] better-sqlite3 unavailable, skipping checkpoint saver\");\n const db = await initDatabase({ dbPath: options.dbPath });\n stores = await createStoresFallback(db);\n } else {\n throw e;\n }\n }\n\n // Extract special keys\n const schedule = stores.schedule;\n checkpoint = stores.checkpoint;\n delete stores.schedule;\n delete stores.checkpoint;\n\n await configureStores(stores as Parameters<typeof configureStores>[0], { autoDisposeStores: true });\n\n // Register schedule storage\n if (schedule) {\n try {\n registerScheduleLattice(\"default\", {\n name: \"Default Scheduler\",\n description: \"Local schedule storage\",\n type: \"postgres\" as never,\n storage: schedule as never,\n });\n } catch { /* non-critical */ }\n }\n\n // Register checkpoint saver\n if (checkpoint) {\n try {\n MemoryLatticeManager.getInstance().removeCheckpointSaver(\"default\");\n registerCheckpointSaver(\"default\", checkpoint as Parameters<typeof registerCheckpointSaver>[1]);\n console.log(\"[store] Checkpoint saver registered\");\n } catch (e) {\n console.log(\"[store] Checkpoint saver skipped:\", e instanceof Error ? e.message : e);\n }\n }\n\n console.log(\"[store] Local SQLite stores ready\");\n\n // Seed default tenant, workspace, and project so the UI works out of the box\n try {\n const tenantId = \"default\";\n\n // Ensure default tenant exists\n const tenantStore = getStoreLattice(\"default\", \"tenant\").store as {\n getTenantById(id: string): Promise<unknown>;\n createTenant(id: string, data: { name: string }): Promise<unknown>;\n };\n const existingTenant = await tenantStore.getTenantById(tenantId).catch(() => null);\n if (!existingTenant) {\n await tenantStore.createTenant(tenantId, { name: \"Default\" });\n }\n\n // Ensure default user exists (onboarding will update the name)\n const userId = \"local\";\n const userStore = getStoreLattice(\"default\", \"user\").store as {\n getUserById(id: string): Promise<unknown>;\n createUser(id: string, data: { name: string; email: string }): Promise<unknown>;\n };\n const existingUser = await userStore.getUserById(userId).catch(() => null);\n if (!existingUser) {\n await userStore.createUser(userId, { name: \"Local User\", email: \"local@local\" });\n }\n\n // Ensure default workspace + project exist\n const wsStore = getStoreLattice(\"default\", \"workspace\").store as {\n getAllWorkspaces(tenantId: string): Promise<{ id: string }[]>;\n createWorkspace(tenantId: string, id: string, data: { name: string; storageType: string }): Promise<unknown>;\n };\n const pjStore = getStoreLattice(\"default\", \"project\").store as {\n getProjectsByWorkspace(tenantId: string, workspaceId: string): Promise<{ id: string }[]>;\n createProject(tenantId: string, workspaceId: string, id: string, data: { name: string }): Promise<unknown>;\n };\n const wss = await wsStore.getAllWorkspaces(tenantId);\n if (wss.length === 0) {\n const wsId = crypto.randomUUID();\n await wsStore.createWorkspace(tenantId, wsId, { name: \"Default\", storageType: \"sandbox\" });\n await pjStore.createProject(tenantId, wsId, crypto.randomUUID(), { name: \"Default Project\" });\n }\n\n // Ensure default assistant exists (model must be registered first via onboarding)\n const asStore = getStoreLattice(\"default\", \"assistant\").store as {\n getAssistantById(tenantId: string, id: string): Promise<unknown>;\n createAssistant(tenantId: string, id: string, data: { name: string; graphDefinition: unknown }): Promise<unknown>;\n };\n const existingAssistant = await asStore.getAssistantById(tenantId, \"default-assistant\").catch(() => null);\n if (!existingAssistant) {\n await asStore.createAssistant(tenantId, \"default-assistant\", {\n name: \"Default Assistant\",\n graphDefinition: {\n key: \"default-assistant\",\n type: \"react\",\n prompt: \"You are a helpful assistant.\",\n modelKey: \"default\",\n tools: [],\n },\n });\n }\n console.log(\"[store] Seeded tenant, user, workspace, project, and assistant\");\n } catch (e) {\n console.log(\"[store] Seed skipped:\", e instanceof Error ? e.message : e);\n }\n\n // 2. Register local sandbox provider\n console.log(`[sandbox] Initializing local sandbox at ${options.sandboxBasePath} ...`);\n const sandboxProvider = createSandboxProvider({\n type: \"local\",\n localSandboxBasePath: options.sandboxBasePath,\n });\n sandboxLatticeManager.registerLattice(\"default\", sandboxProvider);\n console.log(\"[sandbox] Local sandbox provider registered\");\n\n // 3. Swagger setup\n await LatticeGateway.configureSwagger(LatticeGateway.app);\n console.log(`[web] API docs: http://localhost:${options.port}/api-docs`);\n\n // 4. Serve web UI if requested\n if (options.serveWeb) {\n const webDir = resolveWebDir();\n if (webDir) {\n console.log(`[web] Serving chat UI from ${webDir}`);\n\n // SPA fallback: serve index.html for paths without an extension\n LatticeGateway.app.setNotFoundHandler((req, reply) => {\n if ((req.url || \"/\").startsWith(\"/api\")) {\n return reply.status(404).send({ success: false, error: \"Not found\" });\n }\n return reply.type(\"text/html\").send(fs.readFileSync(path.join(webDir, \"index.html\"), \"utf-8\"));\n });\n\n // Serve static assets\n LatticeGateway.app.get(\"/assets/*\", (req, reply) => {\n const p = (req.url || \"\").split(\"?\")[0].replace(/^\\/+/, \"\");\n const filePath = path.join(webDir, p);\n if (!fs.existsSync(filePath)) return reply.status(404).send(\"Not found\");\n const ext = path.extname(filePath);\n const ct: Record<string, string> = { \".js\": \"application/javascript\", \".css\": \"text/css\", \".svg\": \"image/svg+xml\", \".png\": \"image/png\", \".ico\": \"image/x-icon\", \".json\": \"application/json\" };\n return reply.type(ct[ext] || \"application/octet-stream\").send(fs.readFileSync(filePath));\n });\n\n console.log(`[web] Chat UI: http://localhost:${options.port}`);\n } else {\n console.log(\"[web] Web UI files not found (build apps/cli-web first: cd apps/cli-web && pnpm build)\");\n }\n }\n\n // 5. Start gateway\n const DEFAULT_LOGGER_CONFIG: LoggerConfig = {\n name: \"default\",\n description: \"Lattice CLI local server\",\n type: LoggerType.PINO,\n serviceName: \"lattice/cli\",\n loggerName: \"lattice/cli\",\n };\n\n LatticeGateway.startAsHttpEndpoint({\n port: options.port,\n queueServiceConfig: { type: \"memory\", defaultStartPollingQueue: true },\n loggerConfig: DEFAULT_LOGGER_CONFIG,\n });\n\n // Graceful shutdown\n const shutdown = async () => {\n console.log(\"\\n[shutdown] Closing database and stopping server...\");\n closeDatabase();\n await LatticeGateway.app.close();\n process.exit(0);\n };\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n}\n","#!/usr/bin/env node\nimport { startServer, type LatticeCliOptions } from \"./server.js\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\n\nfunction printHelp(): void {\n console.log(`\nlattice — Axiom Lattice local development server\n\nUsage:\n lattice [options]\n\nOptions:\n --port, -p <number> Server port (default: 4001)\n --db-path <path> SQLite database path (default: ~/.axiom/lattice.db)\n --sandbox-path <path> Sandbox base directory (default: ~/.axiom-local-sandbox)\n --web, -w Serve the chat web UI at /\n --help, -h Show this help\n\nExamples:\n lattice Start API-only on port 4001\n lattice --web Start with chat UI\n lattice -p 3000 --web Custom port with web UI\n lattice --db-path ./dev.db Custom database path\n`);\n}\n\nfunction parseArgs(): LatticeCliOptions | null {\n const args = process.argv.slice(2);\n\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n printHelp();\n return null;\n }\n\n const getArg = (flag: string): string | undefined => {\n const idx = args.findIndex((a) => a === flag);\n return idx !== -1 && args[idx + 1] ? args[idx + 1] : undefined;\n };\n\n const hasFlag = (flag: string): boolean => args.includes(flag);\n\n const portStr = getArg(\"--port\") ?? getArg(\"-p\");\n const port = portStr ? parseInt(portStr, 10) : 4001;\n\n return {\n port,\n dbPath: getArg(\"--db-path\") ?? path.join(os.homedir(), \".axiom\", \"lattice.db\"),\n sandboxBasePath: getArg(\"--sandbox-path\") ?? path.join(os.homedir(), \".axiom-local-sandbox\"),\n serveWeb: hasFlag(\"--web\") || hasFlag(\"-w\"),\n };\n}\n\nasync function main(): Promise<void> {\n const options = parseArgs();\n if (!options) return; // help printed\n\n try {\n await startServer(options);\n } catch (err) {\n console.error(\"Failed to start server:\", err);\n process.exit(1);\n }\n}\n\nmain();\n"],"mappings":"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","names":["path"]}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@axiom-lattice/lattice-cli",
3
- "version": "0.2.30",
3
+ "version": "0.2.32",
4
4
  "type": "module",
5
5
  "main": "dist/cli.js",
6
6
  "bin": {
7
7
  "lattice": "./dist/cli.js"
8
8
  },
9
9
  "dependencies": {
10
- "@axiom-lattice/core": "6.3.3",
11
- "@axiom-lattice/gateway": "4.8.4",
12
- "@axiom-lattice/local-stores": "3.2.3",
13
- "@axiom-lattice/protocols": "4.7.1"
10
+ "@axiom-lattice/core": "6.4.1",
11
+ "@axiom-lattice/gateway": "4.9.1",
12
+ "@axiom-lattice/local-stores": "3.2.5",
13
+ "@axiom-lattice/protocols": "4.8.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@types/node": "^20.17.23",
package/src/server.ts CHANGED
@@ -3,6 +3,10 @@ import {
3
3
  configureStores,
4
4
  sandboxLatticeManager,
5
5
  createSandboxProvider,
6
+ registerScheduleLattice,
7
+ MemoryLatticeManager,
8
+ registerCheckpointSaver,
9
+ getStoreLattice,
6
10
  } from "@axiom-lattice/core";
7
11
  import {
8
12
  createLocalStoreConfig,
@@ -103,7 +107,6 @@ export async function startServer(options: LatticeCliOptions): Promise<void> {
103
107
  // Register schedule storage
104
108
  if (schedule) {
105
109
  try {
106
- const { registerScheduleLattice } = await import("@axiom-lattice/core");
107
110
  registerScheduleLattice("default", {
108
111
  name: "Default Scheduler",
109
112
  description: "Local schedule storage",
@@ -116,7 +119,6 @@ export async function startServer(options: LatticeCliOptions): Promise<void> {
116
119
  // Register checkpoint saver
117
120
  if (checkpoint) {
118
121
  try {
119
- const { MemoryLatticeManager, registerCheckpointSaver } = await import("@axiom-lattice/core");
120
122
  MemoryLatticeManager.getInstance().removeCheckpointSaver("default");
121
123
  registerCheckpointSaver("default", checkpoint as Parameters<typeof registerCheckpointSaver>[1]);
122
124
  console.log("[store] Checkpoint saver registered");
@@ -129,8 +131,6 @@ export async function startServer(options: LatticeCliOptions): Promise<void> {
129
131
 
130
132
  // Seed default tenant, workspace, and project so the UI works out of the box
131
133
  try {
132
- const { getStoreLattice } = await import("@axiom-lattice/core");
133
-
134
134
  const tenantId = "default";
135
135
 
136
136
  // Ensure default tenant exists