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.
- package/README.md +7 -6
- package/dist/clean-machine-smoke.test.js +3 -3
- package/dist/configurators/archive.d.ts +2 -0
- package/dist/configurators/{memory.js → archive.js} +3 -3
- package/dist/configurators/index.d.ts +1 -1
- package/dist/configurators/index.js +4 -3
- package/dist/configurators.test.js +3 -3
- package/dist/generator.js +19 -19
- package/dist/generator.test.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8 -5
- package/dist/release-check.js +2 -2
- package/dist/runtime-parity.test.js +3 -3
- package/dist/web-dist/404/index.html +1 -1
- package/dist/web-dist/404.html +1 -1
- package/dist/web-dist/__next.__PAGE__.txt +31 -29
- package/dist/web-dist/__next._full.txt +20 -19
- package/dist/web-dist/__next._tree.txt +1 -1
- package/dist/web-dist/_next/static/chunks/app/chat/{page-ab56048b707a3ddd.js → page-4d90641844cd9fed.js} +1 -1
- package/dist/web-dist/_next/static/chunks/app/operator/page-e18364329865cb68.js +1 -0
- package/dist/web-dist/_not-found/__next._full.txt +1 -1
- package/dist/web-dist/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/web-dist/_not-found/__next._tree.txt +1 -1
- package/dist/web-dist/_not-found/index.html +1 -1
- package/dist/web-dist/_not-found/index.txt +1 -1
- package/dist/web-dist/chat/__next._full.txt +2 -2
- package/dist/web-dist/chat/__next._tree.txt +1 -1
- package/dist/web-dist/chat/__next.chat.__PAGE__.txt +2 -2
- package/dist/web-dist/chat/index.html +1 -1
- package/dist/web-dist/chat/index.txt +2 -2
- package/dist/web-dist/index.html +1 -1
- package/dist/web-dist/index.txt +20 -19
- package/dist/web-dist/operator/__next._full.txt +2 -2
- package/dist/web-dist/operator/__next._tree.txt +1 -1
- package/dist/web-dist/operator/__next.operator.__PAGE__.txt +2 -2
- package/dist/web-dist/operator/index.html +1 -1
- package/dist/web-dist/operator/index.txt +2 -2
- package/package.json +7 -7
- package/dist/clean-machine-e2e.test.d.ts +0 -1
- package/dist/clean-machine-e2e.test.js +0 -160
- package/dist/configurators/memory.d.ts +0 -2
- package/dist/web-dist/_next/static/chunks/app/operator/page-6b2d0ba884183ad7.js +0 -1
- /package/dist/web-dist/_next/static/{4aL_iP3FHsLSyHzCnRQYD → 6myq7R-xRemzP7dQD6m1Q}/_buildManifest.js +0 -0
- /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 (
|
|
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
|
|
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`).
|
|
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
|
|
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
|
|
79
|
-
pnpm --filter
|
|
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: '
|
|
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
|
-
'
|
|
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
|
-
'
|
|
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']);
|
|
@@ -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.
|
|
6
|
+
exports.configureArchive = configureArchive;
|
|
7
7
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
-
async function
|
|
8
|
+
async function configureArchive(_context) {
|
|
9
9
|
const { provider } = await inquirer_1.default.prompt({
|
|
10
10
|
type: 'list',
|
|
11
11
|
name: 'provider',
|
|
12
|
-
message: '
|
|
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 './
|
|
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
|
|
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("./
|
|
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
|
-
|
|
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
|
|
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('
|
|
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,
|
|
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.
|
|
78
|
-
const cliVersion = options.cliVersion || '^
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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: '
|
|
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:
|
|
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:
|
|
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: {`,
|
package/dist/generator.test.js
CHANGED
|
@@ -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['
|
|
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
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 = '
|
|
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 ->
|
|
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?.
|
|
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}•
|
|
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}`);
|
package/dist/release-check.js
CHANGED
|
@@ -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: '
|
|
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 === '
|
|
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
|
-
|
|
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?.
|
|
109
|
-
expect(result.metadata?.
|
|
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&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&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&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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\":\"
|
|
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&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&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&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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>
|
package/dist/web-dist/404.html
CHANGED
|
@@ -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&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&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&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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\":\"
|
|
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&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&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&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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>
|