siduri 1.0.0 → 1.0.2

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.
Files changed (44) hide show
  1. package/README.md +7 -6
  2. package/dist/clean-machine-smoke.test.js +3 -3
  3. package/dist/configurators/archive.d.ts +2 -0
  4. package/dist/configurators/{memory.js → archive.js} +3 -3
  5. package/dist/configurators/index.d.ts +1 -1
  6. package/dist/configurators/index.js +4 -3
  7. package/dist/configurators.test.js +3 -3
  8. package/dist/generator.js +19 -19
  9. package/dist/generator.test.js +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.js +8 -5
  12. package/dist/release-check.js +2 -2
  13. package/dist/runtime-parity.test.js +3 -3
  14. package/dist/web-dist/404/index.html +1 -1
  15. package/dist/web-dist/404.html +1 -1
  16. package/dist/web-dist/__next.__PAGE__.txt +31 -29
  17. package/dist/web-dist/__next._full.txt +20 -19
  18. package/dist/web-dist/__next._tree.txt +1 -1
  19. package/dist/web-dist/_next/static/chunks/app/chat/{page-ab56048b707a3ddd.js → page-4d90641844cd9fed.js} +1 -1
  20. package/dist/web-dist/_next/static/chunks/app/operator/page-e18364329865cb68.js +1 -0
  21. package/dist/web-dist/_not-found/__next._full.txt +1 -1
  22. package/dist/web-dist/_not-found/__next._not-found.__PAGE__.txt +1 -1
  23. package/dist/web-dist/_not-found/__next._tree.txt +1 -1
  24. package/dist/web-dist/_not-found/index.html +1 -1
  25. package/dist/web-dist/_not-found/index.txt +1 -1
  26. package/dist/web-dist/chat/__next._full.txt +2 -2
  27. package/dist/web-dist/chat/__next._tree.txt +1 -1
  28. package/dist/web-dist/chat/__next.chat.__PAGE__.txt +2 -2
  29. package/dist/web-dist/chat/index.html +1 -1
  30. package/dist/web-dist/chat/index.txt +2 -2
  31. package/dist/web-dist/index.html +1 -1
  32. package/dist/web-dist/index.txt +20 -19
  33. package/dist/web-dist/operator/__next._full.txt +2 -2
  34. package/dist/web-dist/operator/__next._tree.txt +1 -1
  35. package/dist/web-dist/operator/__next.operator.__PAGE__.txt +2 -2
  36. package/dist/web-dist/operator/index.html +1 -1
  37. package/dist/web-dist/operator/index.txt +2 -2
  38. package/package.json +7 -7
  39. package/dist/clean-machine-e2e.test.d.ts +0 -1
  40. package/dist/clean-machine-e2e.test.js +0 -160
  41. package/dist/configurators/memory.d.ts +0 -2
  42. package/dist/web-dist/_next/static/chunks/app/operator/page-6b2d0ba884183ad7.js +0 -1
  43. /package/dist/web-dist/_next/static/{4aL_iP3FHsLSyHzCnRQYD → 6myq7R-xRemzP7dQD6m1Q}/_buildManifest.js +0 -0
  44. /package/dist/web-dist/_next/static/{4aL_iP3FHsLSyHzCnRQYD → 6myq7R-xRemzP7dQD6m1Q}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -1,12 +1,13 @@
1
- # Siduri CLI (`@vxnus/siduri`)
1
+ # Siduri CLI (`siduri`)
2
2
 
3
3
  Experimental CLI for creating, diagnosing, and managing standalone Siduri companions powered by the `@sidurijs/*` organ ecosystem.
4
4
 
5
5
  Requires Node.js >=22.16.0.
6
6
 
7
7
  ```bash
8
- npx @vxnus/siduri create my-companion
8
+ npx siduri create my-companion
9
9
  ```
10
+ *(Alternative scoped alias: `npx @vxnus/siduri create my-companion`)*
10
11
 
11
12
  ## Prerequisites
12
13
 
@@ -22,14 +23,14 @@ npx @vxnus/siduri create my-companion
22
23
  - **Interactive Configuration Wizard**: Model catalog discovery for OpenRouter, manifest inspection for E Knowledge Hub, and guided organ parameters.
23
24
  - **Zero Monolithic Bundling**: Scaffolds standard Node.js ESM projects with explicit dependency trees.
24
25
  - **Diagnostics (`siduri doctor`)**: Runs environment variable validation, schema conformance checks, storage writeability verification, external service endpoint probing, and organ health probes.
25
- - **Zero-Config Database**: Powered by embedded SQLite (`siduri.sqlite`). Memory and persistent state are initialized automatically at startup without manual SQL migrations.
26
+ - **Zero-Config Database**: Powered by embedded SQLite (`siduri.sqlite`). Directives, Life DB, and Archive are initialized automatically at startup without manual SQL migrations.
26
27
 
27
28
  ## CLI Usage
28
29
 
29
30
  ### 1. Create a Standalone Companion
30
31
 
31
32
  ```bash
32
- npx @vxnus/siduri create [directory]
33
+ npx siduri create [directory]
33
34
  ```
34
35
 
35
36
  The interactive wizard allows you to name your companion, configure organ providers and models, and inspect Knowledge manifests. It generates:
@@ -75,8 +76,8 @@ Clears SQLite databases and cached state to return the companion to Blank Slate.
75
76
  From the repository root:
76
77
 
77
78
  ```bash
78
- pnpm --filter @vxnus/siduri build
79
- pnpm --filter @vxnus/siduri test
79
+ pnpm --filter siduri build
80
+ pnpm --filter siduri test
80
81
  ```
81
82
 
82
83
  ## License
@@ -26,7 +26,7 @@ describe('Phase 5: Clean-Machine Distribution & Packaging Smoke Suite', () => {
26
26
  { filter: '@sidurijs/voice', dir: 'packages/organs/voice', tarName: `sidurijs-voice-${getPkgVer('packages/organs/voice')}.tgz`, isOrgan: true },
27
27
  { filter: '@sidurijs/observation', dir: 'packages/organs/observation', tarName: `sidurijs-observation-${getPkgVer('packages/organs/observation')}.tgz`, isOrgan: true },
28
28
  { filter: '@sidurijs/mouth', dir: 'packages/organs/mouth', tarName: `sidurijs-mouth-${getPkgVer('packages/organs/mouth')}.tgz`, isOrgan: true },
29
- { filter: '@vxnus/siduri', dir: 'cli', tarName: `vxnus-siduri-${getPkgVer('cli')}.tgz`, isOrgan: false },
29
+ { filter: 'siduri', dir: 'cli', tarName: `siduri-${getPkgVer('cli')}.tgz`, isOrgan: false },
30
30
  ];
31
31
  const getTarPath = (pkgName) => {
32
32
  const pkg = ALL_CANONICAL_PACKAGES.find(p => p.filter === pkgName);
@@ -103,7 +103,7 @@ describe('Phase 5: Clean-Machine Distribution & Packaging Smoke Suite', () => {
103
103
  '@sidurijs/brain': `file:${getTarPath('@sidurijs/brain')}`,
104
104
  };
105
105
  pkgObj.devDependencies = {
106
- '@vxnus/siduri': `file:${getTarPath('@vxnus/siduri')}`,
106
+ 'siduri': `file:${getTarPath('siduri')}`,
107
107
  };
108
108
  node_fs_1.default.writeFileSync(node_path_1.default.join(instanceDir, 'package.json'), JSON.stringify(pkgObj, null, 2) + '\n');
109
109
  node_fs_1.default.writeFileSync(node_path_1.default.join(instanceDir, 'siduri.config.json'), files['siduri.config.json']);
@@ -140,7 +140,7 @@ describe('Phase 5: Clean-Machine Distribution & Packaging Smoke Suite', () => {
140
140
  '@sidurijs/hands': `file:${getTarPath('@sidurijs/hands')}`,
141
141
  };
142
142
  pkgObj.devDependencies = {
143
- '@vxnus/siduri': `file:${getTarPath('@vxnus/siduri')}`,
143
+ 'siduri': `file:${getTarPath('siduri')}`,
144
144
  };
145
145
  node_fs_1.default.writeFileSync(node_path_1.default.join(instanceDir, 'package.json'), JSON.stringify(pkgObj, null, 2) + '\n');
146
146
  node_fs_1.default.writeFileSync(node_path_1.default.join(instanceDir, 'siduri.config.json'), files['siduri.config.json']);
@@ -0,0 +1,2 @@
1
+ import { OrganConfiguratorContext, OrganConfigurationResult } from './types';
2
+ export declare function configureArchive(_context: OrganConfiguratorContext): Promise<OrganConfigurationResult>;
@@ -3,13 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.configureMemory = configureMemory;
6
+ exports.configureArchive = configureArchive;
7
7
  const inquirer_1 = __importDefault(require("inquirer"));
8
- async function configureMemory(_context) {
8
+ async function configureArchive(_context) {
9
9
  const { provider } = await inquirer_1.default.prompt({
10
10
  type: 'list',
11
11
  name: 'provider',
12
- message: 'Memory storage engine?',
12
+ message: 'Archive storage engine (RFC VX-26-13: Audited Interaction Ledger)?',
13
13
  choices: [
14
14
  { name: 'SQLite (Unified zero-config WAL + FTS5 full-text indexing)', value: 'sqlite' },
15
15
  ],
@@ -5,7 +5,7 @@ import { KnowledgeConfiguratorOptions } from './knowledge';
5
5
  export * from './types';
6
6
  export * from './brain';
7
7
  export * from './knowledge';
8
- export * from './memory';
8
+ export * from './archive';
9
9
  export * from './voice';
10
10
  export * from './body';
11
11
  export * from './hands';
@@ -17,7 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.configureOrgan = configureOrgan;
18
18
  const brain_1 = require("./brain");
19
19
  const knowledge_1 = require("./knowledge");
20
- const memory_1 = require("./memory");
20
+ const archive_1 = require("./archive");
21
21
  const voice_1 = require("./voice");
22
22
  const body_1 = require("./body");
23
23
  const hands_1 = require("./hands");
@@ -29,7 +29,7 @@ const mouth_1 = require("./mouth");
29
29
  __exportStar(require("./types"), exports);
30
30
  __exportStar(require("./brain"), exports);
31
31
  __exportStar(require("./knowledge"), exports);
32
- __exportStar(require("./memory"), exports);
32
+ __exportStar(require("./archive"), exports);
33
33
  __exportStar(require("./voice"), exports);
34
34
  __exportStar(require("./body"), exports);
35
35
  __exportStar(require("./hands"), exports);
@@ -50,7 +50,8 @@ async function configureOrgan(manifest, context, options = {}) {
50
50
  case 'knowledge':
51
51
  return (0, knowledge_1.configureKnowledge)(ctx, options.knowledgeOptions);
52
52
  case 'archive':
53
- return (0, memory_1.configureMemory)(ctx);
53
+ case 'memory':
54
+ return (0, archive_1.configureArchive)(ctx);
54
55
  case 'voice':
55
56
  return (0, voice_1.configureVoice)(ctx);
56
57
  case 'body':
@@ -11,7 +11,7 @@ const openrouter_1 = require("./providers/openrouter");
11
11
  const knowledge_hub_1 = require("./providers/knowledge-hub");
12
12
  const brain_1 = require("./configurators/brain");
13
13
  const knowledge_1 = require("./configurators/knowledge");
14
- const memory_1 = require("./configurators/memory");
14
+ const archive_1 = require("./configurators/archive");
15
15
  const voice_1 = require("./configurators/voice");
16
16
  const body_1 = require("./configurators/body");
17
17
  const hands_1 = require("./configurators/hands");
@@ -216,10 +216,10 @@ describe('Guided Manifest-Driven Configuration UX Specification Tests', () => {
216
216
  });
217
217
  });
218
218
  describe('Other Organ Configurators & Generic Router', () => {
219
- test('Memory configurator configures SQLite with WAL and FTS5', async () => {
219
+ test('Archive configurator configures SQLite with WAL and FTS5', async () => {
220
220
  inquirer_1.default.prompt
221
221
  .mockResolvedValueOnce({ provider: 'sqlite' });
222
- const result = await (0, memory_1.configureMemory)({ companionName: 'Sparkle', manifest: archiveManifest });
222
+ const result = await (0, archive_1.configureArchive)({ companionName: 'Sparkle', manifest: archiveManifest });
223
223
  expect(result.config.provider).toBe('sqlite');
224
224
  expect(result.summary?.Database).toBe('SQLite (WAL + FTS5)');
225
225
  expect(result.summary?.Storage).toBe('siduri.sqlite');
package/dist/generator.js CHANGED
@@ -35,7 +35,7 @@ function getDefaultConfigForManifest(manifest) {
35
35
  config.model = config.model || 'anthropic/claude-3.5-sonnet';
36
36
  config.apiKeyEnv = 'OPENROUTER_API_KEY';
37
37
  }
38
- else if (manifest.organType === 'memory') {
38
+ else if (manifest.organType === 'archive' || manifest.organType === 'memory') {
39
39
  config.provider = config.provider || 'sqlite';
40
40
  }
41
41
  else if (manifest.organType === 'voice') {
@@ -74,8 +74,8 @@ function getDefaultConfigForManifest(manifest) {
74
74
  function generateInstanceFiles(options) {
75
75
  const instanceName = options.name || 'my-siduri';
76
76
  const instanceId = options.id || 'default';
77
- const coreVersion = options.coreVersion || '^1.0.0';
78
- const cliVersion = options.cliVersion || '^2.1.0';
77
+ const coreVersion = options.coreVersion || '^1.0.2';
78
+ const cliVersion = options.cliVersion || '^1.0.2';
79
79
  const canonicalOrder = ['brain', 'archive', 'knowledge', 'behavior', 'voice', 'body', 'mouth', 'hands', 'vision', 'ear', 'observation'];
80
80
  const manifests = [...options.selectedManifests].sort((a, b) => {
81
81
  const idxA = canonicalOrder.indexOf(a.organType);
@@ -115,7 +115,7 @@ function generateInstanceFiles(options) {
115
115
  db: 'siduri db',
116
116
  };
117
117
  const devDependencies = {
118
- '@vxnus/siduri': cliVersion,
118
+ siduri: cliVersion,
119
119
  };
120
120
  const packageJsonObj = {
121
121
  name: instanceName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || 'my-siduri',
@@ -560,20 +560,20 @@ function generateInstanceFiles(options) {
560
560
  ` return;`,
561
561
  ` }`,
562
562
  '',
563
- ` // API: Memory Claims & Items`,
564
- ` if ((pathname === '/memory' || pathname === '/memory/claims' || pathname === '/api/memory/claims') && req.method === 'GET') {`,
563
+ ` // API: Directives & Items`,
564
+ ` if ((pathname === '/self/directives/all' || pathname === '/memory' || pathname === '/memory/claims' || pathname === '/api/memory/claims') && req.method === 'GET') {`,
565
565
  ` res.writeHead(200, { 'Content-Type': 'application/json' });`,
566
566
  ` try {`,
567
567
  ` const claims = typeof memory?.getAllClaims === 'function' ? await memory.getAllClaims() : (typeof memory?.getClaims === 'function' ? await memory.getClaims() : []);`,
568
- ` res.end(JSON.stringify({ claims, items: claims }));`,
568
+ ` res.end(JSON.stringify({ claims, items: claims, directives: claims }));`,
569
569
  ` } catch (e) {`,
570
- ` res.end(JSON.stringify({ claims: [], items: [] }));`,
570
+ ` res.end(JSON.stringify({ claims: [], items: [], directives: [] }));`,
571
571
  ` }`,
572
572
  ` return;`,
573
573
  ` }`,
574
574
  '',
575
- ` // API: Memory Proposals`,
576
- ` if (pathname === '/memory/proposals' && req.method === 'GET') {`,
575
+ ` // API: Self Directive Proposals`,
576
+ ` if ((pathname === '/self/proposals' || pathname === '/memory/proposals') && req.method === 'GET') {`,
577
577
  ` res.writeHead(200, { 'Content-Type': 'application/json' });`,
578
578
  ` try {`,
579
579
  ` const proposals = typeof memory?.getPendingClaims === 'function' ? await memory.getPendingClaims() : [];`,
@@ -584,13 +584,13 @@ function generateInstanceFiles(options) {
584
584
  ` return;`,
585
585
  ` }`,
586
586
  '',
587
- ` // API: Memory Directives`,
588
- ` if ((pathname === '/memory/behavioral' || pathname === '/api/memory/directives') && req.method === 'GET') {`,
587
+ ` // API: Active Self Directives`,
588
+ ` if ((pathname === '/self/directives' || pathname === '/self/directives/active' || pathname === '/memory/behavioral' || pathname === '/api/memory/directives') && req.method === 'GET') {`,
589
589
  ` res.writeHead(200, { 'Content-Type': 'application/json' });`,
590
590
  ` try {`,
591
591
  ` const directives = typeof memory?.getDirectives === 'function' ? await memory.getDirectives() : [`,
592
592
  ` { domain: 'personality', name: 'Active Self Tone', content: 'Warm, empathetic, and thoughtful conversational style.' },`,
593
- ` { domain: 'cognition', name: 'Authoritative Memory', content: 'Ground responses in verified claims and personal history.' }`,
593
+ ` { domain: 'cognition', name: 'Self Governance', content: 'Ground responses in verified directives and sovereign life state.' }`,
594
594
  ` ];`,
595
595
  ` res.end(JSON.stringify({ directives }));`,
596
596
  ` } catch (e) {`,
@@ -599,8 +599,8 @@ function generateInstanceFiles(options) {
599
599
  ` return;`,
600
600
  ` }`,
601
601
  '',
602
- ` // API: Memory Proposal & Behavioral Approval / Rejection`,
603
- ` if ((pathname === '/memory/proposals/approve' || pathname === '/memory/proposals/reject' || pathname === '/memory/behavioral/approve' || pathname === '/memory/behavioral/reject') && req.method === 'POST') {`,
602
+ ` // API: Directive & Proposal Approval / Rejection`,
603
+ ` if ((pathname === '/self/directives/approve' || pathname === '/self/directives/reject' || pathname === '/memory/proposals/approve' || pathname === '/memory/proposals/reject' || pathname === '/memory/behavioral/approve' || pathname === '/memory/behavioral/reject') && req.method === 'POST') {`,
604
604
  ` let body = '';`,
605
605
  ` req.on('data', (chunk) => { body += chunk; });`,
606
606
  ` req.on('end', async () => {`,
@@ -692,8 +692,8 @@ function generateInstanceFiles(options) {
692
692
  ` return;`,
693
693
  ` }`,
694
694
  '',
695
- ` // API: Memory & State Reset (Return to blank slate)`,
696
- ` if ((pathname === '/api/reset' || pathname === '/memory/reset' || pathname === '/dev/memory/reset') && req.method === 'POST') {`,
695
+ ` // API: State Reset (Return to blank slate)`,
696
+ ` if ((pathname === '/api/reset' || pathname === '/dev/directives/reset' || pathname === '/dev/archive/reset' || pathname === '/memory/reset' || pathname === '/dev/memory/reset') && req.method === 'POST') {`,
697
697
  ` try {`,
698
698
  ` if (typeof memory?.resetMemory === 'function') {`,
699
699
  ` await memory.resetMemory(config.id);`,
@@ -727,7 +727,7 @@ function generateInstanceFiles(options) {
727
727
  ` actorId: 'owner-user',`,
728
728
  ` sessionId: \`sess-\${config.id}\`,`,
729
729
  ` authorizationRole: 'administrator',`,
730
- ` capabilities: ['chat', 'memory:approve', 'action:execute'],`,
730
+ ` capabilities: ['chat', 'memory:approve', 'directive:approve', 'action:execute'],`,
731
731
  ` authenticated: true,`,
732
732
  ` },`,
733
733
  ` conversation: {`,
@@ -786,7 +786,7 @@ function generateInstanceFiles(options) {
786
786
  ` actorId: 'owner-user',`,
787
787
  ` sessionId: \`sess-\${config.id}\`,`,
788
788
  ` authorizationRole: 'administrator',`,
789
- ` capabilities: ['chat', 'memory:approve', 'action:execute'],`,
789
+ ` capabilities: ['chat', 'memory:approve', 'directive:approve', 'action:execute'],`,
790
790
  ` authenticated: true,`,
791
791
  ` },`,
792
792
  ` conversation: {`,
@@ -89,7 +89,7 @@ describe('Instance Generator Composition Invariants (Phase 3)', () => {
89
89
  expect(pkg.dependencies['@sidurijs/hands']).toBeUndefined();
90
90
  expect(pkg.dependencies['@sidurijs/voice']).toBeUndefined();
91
91
  expect(pkg.dependencies['@sidurijs/body']).toBeUndefined();
92
- expect(pkg.devDependencies['@vxnus/siduri']).toBeDefined();
92
+ expect(pkg.devDependencies['siduri']).toBeDefined();
93
93
  // src/index.js
94
94
  expect(files['src/index.js']).toContain("import { OpenRouterBrain } from '@sidurijs/brain'");
95
95
  expect(files['src/index.js']).not.toContain('@sidurijs/hands');
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { OrganManifest } from './manifest';
3
- export declare const CLI_VERSION = "2.1.0";
3
+ export declare const CLI_VERSION = "1.0.2";
4
4
  import { colors } from './colors';
5
5
  export { colors };
6
6
  export declare function printHeader(): void;
package/dist/index.js CHANGED
@@ -61,7 +61,7 @@ const doctor_1 = require("./doctor");
61
61
  const db_1 = require("./db");
62
62
  const configurators_1 = require("./configurators");
63
63
  const execFile = (0, node_util_1.promisify)(node_child_process_1.execFile);
64
- exports.CLI_VERSION = '2.1.0';
64
+ exports.CLI_VERSION = '1.0.2';
65
65
  const colors_1 = require("./colors");
66
66
  Object.defineProperty(exports, "colors", { enumerable: true, get: function () { return colors_1.colors; } });
67
67
  function printHeader() {
@@ -182,8 +182,8 @@ async function runCreateWizard(targetDir, options) {
182
182
  const projectDir = node_path_1.default.resolve(process.cwd(), projectDirName);
183
183
  printSection('Organ Configuration');
184
184
  console.log(`${colors_1.colors.dim}Configuring capability organs for ${projectDirName} sequentially from cognition to physical embodiment.${colors_1.colors.reset}\n`);
185
- // Canonical organ presentation order: Cognition -> Memory/State -> Identity -> Embodiment & Peripheral
186
- const canonicalOrder = ['brain', 'memory', 'knowledge', 'behavior', 'voice', 'body', 'mouth', 'hands', 'vision', 'ear', 'observation'];
185
+ // Canonical organ presentation order: Cognition -> Archive/State -> Knowledge -> Self/Identity -> Embodiment & Peripheral
186
+ const canonicalOrder = ['brain', 'archive', 'memory', 'knowledge', 'self', 'behavior', 'voice', 'body', 'mouth', 'hands', 'vision', 'ear', 'observation'];
187
187
  const orderedManifests = [...availableManifests].sort((a, b) => {
188
188
  const idxA = canonicalOrder.indexOf(a.organType);
189
189
  const idxB = canonicalOrder.indexOf(b.organType);
@@ -454,7 +454,9 @@ async function runCliReset(targetDir) {
454
454
  const config = JSON.parse(node_fs_1.default.readFileSync(configPath, 'utf8'));
455
455
  if (config.id)
456
456
  companionId = config.id;
457
- if (config.organs?.memory?.dbPath)
457
+ if (config.organs?.archive?.dbPath)
458
+ dbPath = config.organs.archive.dbPath;
459
+ else if (config.organs?.memory?.dbPath)
458
460
  dbPath = config.organs.memory.dbPath;
459
461
  }
460
462
  catch { }
@@ -466,6 +468,7 @@ async function runCliReset(targetDir) {
466
468
  return;
467
469
  }
468
470
  const tables = [
471
+ 'archive_events',
469
472
  'memory_claims',
470
473
  'memory_events',
471
474
  'self_directives',
@@ -511,7 +514,7 @@ async function runCliReset(targetDir) {
511
514
  db.close();
512
515
  }
513
516
  printSuccess(`Companion state reset to blank slate:`);
514
- console.log(` ${colors_1.colors.dim}• Memory claims and events cleared${colors_1.colors.reset}`);
517
+ console.log(` ${colors_1.colors.dim}• Interaction archive events cleared${colors_1.colors.reset}`);
515
518
  console.log(` ${colors_1.colors.dim}• Self directives, identity, and relationships cleared${colors_1.colors.reset}`);
516
519
  console.log(` ${colors_1.colors.dim}• Life DB (entities, tasks, schedule, events) cleared${colors_1.colors.reset}`);
517
520
  console.log(` ${colors_1.colors.dim}• System logs cleared${colors_1.colors.reset}`);
@@ -30,7 +30,7 @@ function runReleaseCheck(repoRoot = node_path_1.default.resolve(__dirname, '../.
30
30
  { name: '@sidurijs/voice', dir: 'packages/organs/voice', isOrgan: true, tarName: `sidurijs-voice-${getPkgVer('packages/organs/voice')}.tgz` },
31
31
  { name: '@sidurijs/mouth', dir: 'packages/organs/mouth', isOrgan: true, tarName: `sidurijs-mouth-${getPkgVer('packages/organs/mouth')}.tgz` },
32
32
  { name: '@sidurijs/observation', dir: 'packages/organs/observation', isOrgan: true, tarName: `sidurijs-observation-${getPkgVer('packages/organs/observation')}.tgz` },
33
- { name: '@vxnus/siduri', dir: 'cli', isOrgan: false, tarName: `vxnus-siduri-${getPkgVer('cli')}.tgz` },
33
+ { name: 'siduri', dir: 'cli', isOrgan: false, tarName: `siduri-${getPkgVer('cli')}.tgz` },
34
34
  ];
35
35
  let packagesChecked = 0;
36
36
  let tarballsInspected = 0;
@@ -88,7 +88,7 @@ function runReleaseCheck(repoRoot = node_path_1.default.resolve(__dirname, '../.
88
88
  manifestsValidated++;
89
89
  }
90
90
  }
91
- if (pkg.name === '@vxnus/siduri') {
91
+ if (pkg.name === 'siduri') {
92
92
  if (!pkgJson.bin || !pkgJson.bin.siduri) {
93
93
  errors.push(`${pkg.name}: bin.siduri field missing in package.json`);
94
94
  }
@@ -61,7 +61,7 @@ describe('Localweb and CLI Standalone 1:1 Runtime & Chat Parity', () => {
61
61
  metadata: {
62
62
  language: 'ja',
63
63
  internal_monologue: 'Monologue test',
64
- memory_proposals: [
64
+ claim_proposals: [
65
65
  {
66
66
  proposal_id: 'prop-1',
67
67
  subject: 'user',
@@ -105,8 +105,8 @@ describe('Localweb and CLI Standalone 1:1 Runtime & Chat Parity', () => {
105
105
  expect(result.response.audio_url).toBe('/voice/stream?id=speech-789');
106
106
  expect(result.response.evidence_ids).toEqual([]);
107
107
  // 3. Metadata proposals & events
108
- expect(result.metadata?.memory_proposals).toHaveLength(1);
109
- expect(result.metadata?.memory_proposals?.[0].proposal_id).toBe('prop-1');
108
+ expect(result.metadata?.claim_proposals).toHaveLength(1);
109
+ expect(result.metadata?.claim_proposals?.[0].proposal_id).toBe('prop-1');
110
110
  expect(result.metadata?.events).toHaveLength(1);
111
111
  expect(result.metadata?.events?.[0].expression).toBe('happy');
112
112
  // 4. Convenience backward-compatibility fields (no runtimeResult envelope nesting)
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="h-full antialiased dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"/><link rel="stylesheet" href="/_next/static/css/ceeb8e5596664b11.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9073f434bc17ce16.js"/><script src="/_next/static/chunks/563b947f-8e2871a2ab7cd91e.js" async=""></script><script src="/_next/static/chunks/136-1d10af93b770a1c8.js" async=""></script><script src="/_next/static/chunks/main-app-9e6a144626e5a5b9.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><meta name="theme-color" content="#0b0b0e"/><title>Siduri — Local-First Companion</title><meta name="description" content="Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence."/><link rel="icon" href="/favicon.ico?7715e5163ea8ac02" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.ico"/><link rel="icon" href="/favicon.svg" type="image/svg+xml"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9073f434bc17ce16.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8766,[],\"\"]\n3:I[356,[],\"\"]\n4:I[5127,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[5127,[],\"ViewportBoundary\"]\na:I[5127,[],\"MetadataBoundary\"]\nc:I[6886,[],\"default\",1]\n:HL[\"/_next/static/css/ceeb8e5596664b11.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"style\"]\n7:X\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ceeb8e5596664b11.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full antialiased dark\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"4aL_iP3FHsLSyHzCnRQYD\"}\n"])</script><script>self.__next_f.push([1,"7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0b0b0e\"}]]\n"])</script><script>self.__next_f.push([1,"d:I[3366,[],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Siduri — Local-First Companion\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?7715e5163ea8ac02\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$Ld\",\"6\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="h-full antialiased dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"/><link rel="stylesheet" href="/_next/static/css/ceeb8e5596664b11.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9073f434bc17ce16.js"/><script src="/_next/static/chunks/563b947f-8e2871a2ab7cd91e.js" async=""></script><script src="/_next/static/chunks/136-1d10af93b770a1c8.js" async=""></script><script src="/_next/static/chunks/main-app-9e6a144626e5a5b9.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><meta name="theme-color" content="#0b0b0e"/><title>Siduri — Local-First Companion</title><meta name="description" content="Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence."/><link rel="icon" href="/favicon.ico?7715e5163ea8ac02" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.ico"/><link rel="icon" href="/favicon.svg" type="image/svg+xml"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9073f434bc17ce16.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8766,[],\"\"]\n3:I[356,[],\"\"]\n4:I[5127,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[5127,[],\"ViewportBoundary\"]\na:I[5127,[],\"MetadataBoundary\"]\nc:I[6886,[],\"default\",1]\n:HL[\"/_next/static/css/ceeb8e5596664b11.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"style\"]\n7:X\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ceeb8e5596664b11.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full antialiased dark\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"6myq7R-xRemzP7dQD6m1Q\"}\n"])</script><script>self.__next_f.push([1,"7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0b0b0e\"}]]\n"])</script><script>self.__next_f.push([1,"d:I[3366,[],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Siduri — Local-First Companion\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?7715e5163ea8ac02\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$Ld\",\"6\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="h-full antialiased dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"/><link rel="stylesheet" href="/_next/static/css/ceeb8e5596664b11.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9073f434bc17ce16.js"/><script src="/_next/static/chunks/563b947f-8e2871a2ab7cd91e.js" async=""></script><script src="/_next/static/chunks/136-1d10af93b770a1c8.js" async=""></script><script src="/_next/static/chunks/main-app-9e6a144626e5a5b9.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><meta name="theme-color" content="#0b0b0e"/><title>Siduri — Local-First Companion</title><meta name="description" content="Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence."/><link rel="icon" href="/favicon.ico?7715e5163ea8ac02" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.ico"/><link rel="icon" href="/favicon.svg" type="image/svg+xml"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9073f434bc17ce16.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8766,[],\"\"]\n3:I[356,[],\"\"]\n4:I[5127,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[5127,[],\"ViewportBoundary\"]\na:I[5127,[],\"MetadataBoundary\"]\nc:I[6886,[],\"default\",1]\n:HL[\"/_next/static/css/ceeb8e5596664b11.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"style\"]\n7:X\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ceeb8e5596664b11.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full antialiased dark\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"4aL_iP3FHsLSyHzCnRQYD\"}\n"])</script><script>self.__next_f.push([1,"7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0b0b0e\"}]]\n"])</script><script>self.__next_f.push([1,"d:I[3366,[],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Siduri — Local-First Companion\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?7715e5163ea8ac02\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$Ld\",\"6\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="h-full antialiased dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"/><link rel="stylesheet" href="/_next/static/css/ceeb8e5596664b11.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9073f434bc17ce16.js"/><script src="/_next/static/chunks/563b947f-8e2871a2ab7cd91e.js" async=""></script><script src="/_next/static/chunks/136-1d10af93b770a1c8.js" async=""></script><script src="/_next/static/chunks/main-app-9e6a144626e5a5b9.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><meta name="theme-color" content="#0b0b0e"/><title>Siduri — Local-First Companion</title><meta name="description" content="Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence."/><link rel="icon" href="/favicon.ico?7715e5163ea8ac02" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.ico"/><link rel="icon" href="/favicon.svg" type="image/svg+xml"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9073f434bc17ce16.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8766,[],\"\"]\n3:I[356,[],\"\"]\n4:I[5127,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[5127,[],\"ViewportBoundary\"]\na:I[5127,[],\"MetadataBoundary\"]\nc:I[6886,[],\"default\",1]\n:HL[\"/_next/static/css/ceeb8e5596664b11.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"style\"]\n7:X\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ceeb8e5596664b11.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full antialiased dark\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"6myq7R-xRemzP7dQD6m1Q\"}\n"])</script><script>self.__next_f.push([1,"7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0b0b0e\"}]]\n"])</script><script>self.__next_f.push([1,"d:I[3366,[],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Siduri — Local-First Companion\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?7715e5163ea8ac02\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$Ld\",\"6\",{}]]\n"])</script></body></html>