@vxnus/siduri 0.1.3 → 0.1.5
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/dist/builtin-manifests.js +10 -10
- package/dist/clean-machine-e2e.test.js +21 -21
- package/dist/configurators/body.js +3 -3
- package/dist/configurators.test.js +4 -4
- package/dist/generator.js +15 -14
- package/dist/generator.test.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/release-check.js +12 -12
- package/dist/web-dist/404/index.html +1 -1
- package/dist/web-dist/404.html +1 -1
- package/dist/web-dist/__next.__PAGE__.txt +3 -3
- package/dist/web-dist/__next._full.txt +3 -3
- package/dist/web-dist/__next._tree.txt +2 -2
- package/dist/web-dist/_next/static/chunks/1dc9n0p39yo65.css +1 -0
- package/dist/web-dist/_next/static/chunks/{01iq592nolf0t.js → 1eusi7dzngpy3.js} +1 -1
- package/dist/web-dist/_not-found/__next._full.txt +2 -2
- package/dist/web-dist/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/dist/web-dist/_not-found/__next._tree.txt +2 -2
- package/dist/web-dist/_not-found/index.html +1 -1
- package/dist/web-dist/_not-found/index.txt +2 -2
- package/dist/web-dist/chat/__next._full.txt +3 -3
- package/dist/web-dist/chat/__next._tree.txt +2 -2
- package/dist/web-dist/chat/__next.chat.__PAGE__.txt +3 -3
- package/dist/web-dist/chat/index.html +1 -1
- package/dist/web-dist/chat/index.txt +3 -3
- package/dist/web-dist/index.html +1 -1
- package/dist/web-dist/index.txt +3 -3
- package/dist/web-dist/operator/__next._full.txt +2 -2
- package/dist/web-dist/operator/__next._tree.txt +2 -2
- 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 +8 -8
- package/dist/web-dist/_next/static/chunks/2bu5_paf4sm3x.css +0 -1
- /package/dist/web-dist/_next/static/{jA7i3F3whceXTT5sOtVhE → fySnDRfSgiBzStXXyXjTp}/_buildManifest.js +0 -0
- /package/dist/web-dist/_next/static/{jA7i3F3whceXTT5sOtVhE → fySnDRfSgiBzStXXyXjTp}/_clientMiddlewareManifest.js +0 -0
- /package/dist/web-dist/_next/static/{jA7i3F3whceXTT5sOtVhE → fySnDRfSgiBzStXXyXjTp}/_ssgManifest.js +0 -0
|
@@ -5,7 +5,7 @@ exports.BUILTIN_ORGAN_MANIFESTS = [
|
|
|
5
5
|
{
|
|
6
6
|
name: '@siduri-x/behavior',
|
|
7
7
|
organType: 'behavior',
|
|
8
|
-
version: '1.0.
|
|
8
|
+
version: '1.0.2',
|
|
9
9
|
displayName: 'Behavior (Active Self Directives)',
|
|
10
10
|
description: 'Atomic directive state machine and personality projection compiler',
|
|
11
11
|
entrypoint: './dist/index.js',
|
|
@@ -32,7 +32,7 @@ exports.BUILTIN_ORGAN_MANIFESTS = [
|
|
|
32
32
|
{
|
|
33
33
|
name: '@siduri-x/body',
|
|
34
34
|
organType: 'body',
|
|
35
|
-
version: '1.0.
|
|
35
|
+
version: '1.0.4',
|
|
36
36
|
displayName: 'Body (Live2D & Avatar State)',
|
|
37
37
|
description: 'Renderer-agnostic avatar expression and embodiment event adapter',
|
|
38
38
|
entrypoint: './dist/index.js',
|
|
@@ -66,7 +66,7 @@ exports.BUILTIN_ORGAN_MANIFESTS = [
|
|
|
66
66
|
{
|
|
67
67
|
name: '@siduri-x/brain',
|
|
68
68
|
organType: 'brain',
|
|
69
|
-
version: '1.0.
|
|
69
|
+
version: '1.0.2',
|
|
70
70
|
displayName: 'Brain (Cognition & Planning)',
|
|
71
71
|
description: 'Provider-neutral LLM reasoning, response planning, and proposal generation',
|
|
72
72
|
entrypoint: './dist/index.js',
|
|
@@ -122,7 +122,7 @@ exports.BUILTIN_ORGAN_MANIFESTS = [
|
|
|
122
122
|
{
|
|
123
123
|
name: '@siduri-x/ear',
|
|
124
124
|
organType: 'ear',
|
|
125
|
-
version: '1.0.
|
|
125
|
+
version: '1.0.2',
|
|
126
126
|
displayName: 'Ear (Perception Ingress)',
|
|
127
127
|
description: 'Multi-modal sensory input ingestion, transcription bounds, and mime validation',
|
|
128
128
|
entrypoint: './dist/index.js',
|
|
@@ -153,7 +153,7 @@ exports.BUILTIN_ORGAN_MANIFESTS = [
|
|
|
153
153
|
{
|
|
154
154
|
name: '@siduri-x/hands',
|
|
155
155
|
organType: 'hands',
|
|
156
|
-
version: '1.0.
|
|
156
|
+
version: '1.0.2',
|
|
157
157
|
displayName: 'Hands (MCP Tool Execution)',
|
|
158
158
|
description: 'Model Context Protocol tool management and cryptographically authorized action execution',
|
|
159
159
|
entrypoint: './dist/index.js',
|
|
@@ -207,7 +207,7 @@ exports.BUILTIN_ORGAN_MANIFESTS = [
|
|
|
207
207
|
{
|
|
208
208
|
name: '@siduri-x/knowledge',
|
|
209
209
|
organType: 'knowledge',
|
|
210
|
-
version: '1.0.
|
|
210
|
+
version: '1.0.2',
|
|
211
211
|
displayName: 'Knowledge (E-Compatible Cited Facts)',
|
|
212
212
|
description: 'Factual context retrieval from local or hosted E Knowledge packs',
|
|
213
213
|
entrypoint: './dist/index.js',
|
|
@@ -272,7 +272,7 @@ exports.BUILTIN_ORGAN_MANIFESTS = [
|
|
|
272
272
|
{
|
|
273
273
|
name: '@siduri-x/memory',
|
|
274
274
|
organType: 'memory',
|
|
275
|
-
version: '1.0.
|
|
275
|
+
version: '1.0.2',
|
|
276
276
|
displayName: 'Memory (PostgreSQL FTS Claims)',
|
|
277
277
|
description: 'Relational semantic claims with Full-Text Search and companion isolation',
|
|
278
278
|
entrypoint: './dist/index.js',
|
|
@@ -324,7 +324,7 @@ exports.BUILTIN_ORGAN_MANIFESTS = [
|
|
|
324
324
|
{
|
|
325
325
|
name: '@siduri-x/observation',
|
|
326
326
|
organType: 'observation',
|
|
327
|
-
version: '1.0.
|
|
327
|
+
version: '1.0.2',
|
|
328
328
|
displayName: 'Observation (Screen Perception & Frame Ingest)',
|
|
329
329
|
description: 'Screen capture frame ingest, SHA-256 deduplication, and visual grounding for Eyes/Vision',
|
|
330
330
|
entrypoint: './dist/index.js',
|
|
@@ -342,7 +342,7 @@ exports.BUILTIN_ORGAN_MANIFESTS = [
|
|
|
342
342
|
{
|
|
343
343
|
name: '@siduri-x/vision',
|
|
344
344
|
organType: 'vision',
|
|
345
|
-
version: '1.0.
|
|
345
|
+
version: '1.0.2',
|
|
346
346
|
displayName: 'Vision (Visual Perception & OCR)',
|
|
347
347
|
description: 'Image inspection, cropping, and multi-pass OCR perception adapter',
|
|
348
348
|
entrypoint: './dist/index.js',
|
|
@@ -389,7 +389,7 @@ exports.BUILTIN_ORGAN_MANIFESTS = [
|
|
|
389
389
|
{
|
|
390
390
|
name: '@siduri-x/voice',
|
|
391
391
|
organType: 'voice',
|
|
392
|
-
version: '1.0.
|
|
392
|
+
version: '1.0.3',
|
|
393
393
|
displayName: 'Voice (VOICEVOX Speech Synthesis)',
|
|
394
394
|
description: 'Queued speech synthesis and audio rendering lifecycle adapter',
|
|
395
395
|
entrypoint: './dist/index.js',
|
|
@@ -13,18 +13,18 @@ describe('Phase 5: Clean-Machine Distribution & E2E Integration Suite', () => {
|
|
|
13
13
|
const tempPackDir = node_path_1.default.resolve(__dirname, '../temp-packs-e2e');
|
|
14
14
|
const cleanMachineRoot = node_path_1.default.resolve(__dirname, '../temp-clean-machine-e2e');
|
|
15
15
|
const ALL_CANONICAL_PACKAGES = [
|
|
16
|
-
{ filter: '@siduri-x/core', tarName: 'siduri-x-core-1.0.
|
|
17
|
-
{ filter: '@siduri-x/brain', tarName: 'siduri-x-brain-1.0.
|
|
18
|
-
{ filter: '@siduri-x/memory', tarName: 'siduri-x-memory-1.0.
|
|
19
|
-
{ filter: '@siduri-x/knowledge', tarName: 'siduri-x-knowledge-1.0.
|
|
20
|
-
{ filter: '@siduri-x/behavior', tarName: 'siduri-x-behavior-1.0.
|
|
21
|
-
{ filter: '@siduri-x/ear', tarName: 'siduri-x-ear-1.0.
|
|
22
|
-
{ filter: '@siduri-x/vision', tarName: 'siduri-x-vision-1.0.
|
|
23
|
-
{ filter: '@siduri-x/hands', tarName: 'siduri-x-hands-1.0.
|
|
24
|
-
{ filter: '@siduri-x/body', tarName: 'siduri-x-body-1.0.
|
|
25
|
-
{ filter: '@siduri-x/voice', tarName: 'siduri-x-voice-1.0.
|
|
26
|
-
{ filter: '@siduri-x/observation', tarName: 'siduri-x-observation-1.0.
|
|
27
|
-
{ filter: '@vxnus/siduri', tarName: 'vxnus-siduri-0.1.
|
|
16
|
+
{ filter: '@siduri-x/core', tarName: 'siduri-x-core-1.0.2.tgz', isOrgan: false },
|
|
17
|
+
{ filter: '@siduri-x/brain', tarName: 'siduri-x-brain-1.0.2.tgz', isOrgan: true },
|
|
18
|
+
{ filter: '@siduri-x/memory', tarName: 'siduri-x-memory-1.0.2.tgz', isOrgan: true },
|
|
19
|
+
{ filter: '@siduri-x/knowledge', tarName: 'siduri-x-knowledge-1.0.2.tgz', isOrgan: true },
|
|
20
|
+
{ filter: '@siduri-x/behavior', tarName: 'siduri-x-behavior-1.0.2.tgz', isOrgan: true },
|
|
21
|
+
{ filter: '@siduri-x/ear', tarName: 'siduri-x-ear-1.0.2.tgz', isOrgan: true },
|
|
22
|
+
{ filter: '@siduri-x/vision', tarName: 'siduri-x-vision-1.0.2.tgz', isOrgan: true },
|
|
23
|
+
{ filter: '@siduri-x/hands', tarName: 'siduri-x-hands-1.0.2.tgz', isOrgan: true },
|
|
24
|
+
{ filter: '@siduri-x/body', tarName: 'siduri-x-body-1.0.4.tgz', isOrgan: true },
|
|
25
|
+
{ filter: '@siduri-x/voice', tarName: 'siduri-x-voice-1.0.3.tgz', isOrgan: true },
|
|
26
|
+
{ filter: '@siduri-x/observation', tarName: 'siduri-x-observation-1.0.2.tgz', isOrgan: true },
|
|
27
|
+
{ filter: '@vxnus/siduri', tarName: 'vxnus-siduri-0.1.5.tgz', isOrgan: false },
|
|
28
28
|
];
|
|
29
29
|
beforeAll(() => {
|
|
30
30
|
// 1. Prepare clean directories
|
|
@@ -86,7 +86,7 @@ describe('Phase 5: Clean-Machine Distribution & E2E Integration Suite', () => {
|
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
88
|
test('memory organ tarball packages migrations/001_initial_schema.sql', () => {
|
|
89
|
-
const memoryTarPath = node_path_1.default.join(tempPackDir, 'siduri-x-memory-1.0.
|
|
89
|
+
const memoryTarPath = node_path_1.default.join(tempPackDir, 'siduri-x-memory-1.0.2.tgz');
|
|
90
90
|
const listing = (0, node_child_process_1.execSync)(`tar -tzf ${memoryTarPath}`, { encoding: 'utf8' });
|
|
91
91
|
expect(listing).toContain('package/migrations/001_initial_schema.sql');
|
|
92
92
|
});
|
|
@@ -106,8 +106,8 @@ describe('Phase 5: Clean-Machine Distribution & E2E Integration Suite', () => {
|
|
|
106
106
|
// Write instance files referencing packed tarballs directly for true clean machine install
|
|
107
107
|
const pkgObj = JSON.parse(files['package.json']);
|
|
108
108
|
pkgObj.dependencies = {
|
|
109
|
-
'@siduri-x/core': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-core-1.0.
|
|
110
|
-
'@siduri-x/brain': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-brain-1.0.
|
|
109
|
+
'@siduri-x/core': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-core-1.0.2.tgz')}`,
|
|
110
|
+
'@siduri-x/brain': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-brain-1.0.2.tgz')}`,
|
|
111
111
|
};
|
|
112
112
|
node_fs_1.default.writeFileSync(node_path_1.default.join(instanceDir, 'package.json'), JSON.stringify(pkgObj, null, 2) + '\n');
|
|
113
113
|
node_fs_1.default.writeFileSync(node_path_1.default.join(instanceDir, 'siduri.config.json'), files['siduri.config.json']);
|
|
@@ -154,9 +154,9 @@ describe('Phase 5: Clean-Machine Distribution & E2E Integration Suite', () => {
|
|
|
154
154
|
});
|
|
155
155
|
const pkgObj = JSON.parse(files['package.json']);
|
|
156
156
|
pkgObj.dependencies = {
|
|
157
|
-
'@siduri-x/core': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-core-1.0.
|
|
158
|
-
'@siduri-x/brain': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-brain-1.0.
|
|
159
|
-
'@siduri-x/hands': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-hands-1.0.
|
|
157
|
+
'@siduri-x/core': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-core-1.0.2.tgz')}`,
|
|
158
|
+
'@siduri-x/brain': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-brain-1.0.2.tgz')}`,
|
|
159
|
+
'@siduri-x/hands': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-hands-1.0.2.tgz')}`,
|
|
160
160
|
};
|
|
161
161
|
node_fs_1.default.writeFileSync(node_path_1.default.join(instanceDir, 'package.json'), JSON.stringify(pkgObj, null, 2) + '\n');
|
|
162
162
|
node_fs_1.default.writeFileSync(node_path_1.default.join(instanceDir, 'siduri.config.json'), files['siduri.config.json']);
|
|
@@ -193,9 +193,9 @@ describe('Phase 5: Clean-Machine Distribution & E2E Integration Suite', () => {
|
|
|
193
193
|
});
|
|
194
194
|
const pkgObj = JSON.parse(files['package.json']);
|
|
195
195
|
pkgObj.dependencies = {
|
|
196
|
-
'@siduri-x/core': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-core-1.0.
|
|
197
|
-
'@siduri-x/brain': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-brain-1.0.
|
|
198
|
-
'@siduri-x/memory': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-memory-1.0.
|
|
196
|
+
'@siduri-x/core': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-core-1.0.2.tgz')}`,
|
|
197
|
+
'@siduri-x/brain': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-brain-1.0.2.tgz')}`,
|
|
198
|
+
'@siduri-x/memory': `file:${node_path_1.default.join(tempPackDir, 'siduri-x-memory-1.0.2.tgz')}`,
|
|
199
199
|
};
|
|
200
200
|
node_fs_1.default.writeFileSync(node_path_1.default.join(instanceDir, 'package.json'), JSON.stringify(pkgObj, null, 2) + '\n');
|
|
201
201
|
node_fs_1.default.writeFileSync(node_path_1.default.join(instanceDir, 'siduri.config.json'), files['siduri.config.json']);
|
|
@@ -27,7 +27,7 @@ async function configureBody(_context) {
|
|
|
27
27
|
type: 'input',
|
|
28
28
|
name: 'modelSource',
|
|
29
29
|
message: 'Live2D Model path / URL (.model3.json):',
|
|
30
|
-
default: `./assets/body
|
|
30
|
+
default: `./assets/body/${companionSlug}/model.model3.json`,
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
type: 'list',
|
|
@@ -41,9 +41,9 @@ async function configureBody(_context) {
|
|
|
41
41
|
default: 'neutral',
|
|
42
42
|
},
|
|
43
43
|
]);
|
|
44
|
-
const modelPath = modelSource.trim() || `./assets/body
|
|
44
|
+
const modelPath = modelSource.trim() || `./assets/body/${companionSlug}/model.model3.json`;
|
|
45
45
|
const isHttpOrAbsolute = modelPath.startsWith('http://') || modelPath.startsWith('https://') || modelPath.startsWith('/');
|
|
46
|
-
const webModelUrl = isHttpOrAbsolute ? modelPath : `/
|
|
46
|
+
const webModelUrl = isHttpOrAbsolute ? modelPath : `/assets/body/${companionSlug}/model.model3.json`;
|
|
47
47
|
return {
|
|
48
48
|
config: {
|
|
49
49
|
provider: 'live2d',
|
|
@@ -202,15 +202,15 @@ describe('Guided Manifest-Driven Configuration UX Specification Tests', () => {
|
|
|
202
202
|
inquirer_1.default.prompt
|
|
203
203
|
.mockResolvedValueOnce({ provider: 'live2d' })
|
|
204
204
|
.mockResolvedValueOnce({
|
|
205
|
-
modelSource: './assets/body/
|
|
205
|
+
modelSource: './assets/body/sparkle/model.model3.json',
|
|
206
206
|
initialExpression: 'happy',
|
|
207
207
|
});
|
|
208
208
|
const result = await (0, body_1.configureBody)({ companionName: 'Sparkle', manifest: bodyManifest });
|
|
209
209
|
expect(result.config.provider).toBe('live2d');
|
|
210
|
-
expect(result.config.modelPath).toBe('./assets/body/
|
|
211
|
-
expect(result.config.modelUrl).toBe('/
|
|
210
|
+
expect(result.config.modelPath).toBe('./assets/body/sparkle/model.model3.json');
|
|
211
|
+
expect(result.config.modelUrl).toBe('/assets/body/sparkle/model.model3.json');
|
|
212
212
|
expect(result.config.initialExpression).toBe('happy');
|
|
213
|
-
expect(result.summary?.['Model Path']).toBe('./assets/body/
|
|
213
|
+
expect(result.summary?.['Model Path']).toBe('./assets/body/sparkle/model.model3.json');
|
|
214
214
|
});
|
|
215
215
|
test('Hands configurator configures MCP tool execution timeout', async () => {
|
|
216
216
|
inquirer_1.default.prompt.mockResolvedValueOnce({ timeoutSeconds: '15' });
|
package/dist/generator.js
CHANGED
|
@@ -46,8 +46,8 @@ function getDefaultConfigForManifest(manifest) {
|
|
|
46
46
|
else if (manifest.organType === 'body') {
|
|
47
47
|
config.provider = config.provider || 'live2d';
|
|
48
48
|
config.initialExpression = config.initialExpression || 'neutral';
|
|
49
|
-
config.modelPath = config.modelPath || './assets/body/
|
|
50
|
-
config.modelUrl = config.modelUrl || '/
|
|
49
|
+
config.modelPath = config.modelPath || './assets/body/default/model.model3.json';
|
|
50
|
+
config.modelUrl = config.modelUrl || '/assets/body/default/model.model3.json';
|
|
51
51
|
}
|
|
52
52
|
else if (manifest.organType === 'hands') {
|
|
53
53
|
config.defaultTimeoutMs = config.defaultTimeoutMs || 10000;
|
|
@@ -68,7 +68,7 @@ function getDefaultConfigForManifest(manifest) {
|
|
|
68
68
|
function generateInstanceFiles(options) {
|
|
69
69
|
const instanceName = options.name || 'my-siduri';
|
|
70
70
|
const instanceId = options.id || 'default';
|
|
71
|
-
const coreVersion = options.coreVersion || '^1.0.
|
|
71
|
+
const coreVersion = options.coreVersion || '^1.0.2';
|
|
72
72
|
const manifests = options.selectedManifests;
|
|
73
73
|
const hasMemory = manifests.some((m) => m.organType === 'memory');
|
|
74
74
|
const hasVoice = manifests.some((m) => m.organType === 'voice');
|
|
@@ -385,7 +385,7 @@ function generateInstanceFiles(options) {
|
|
|
385
385
|
` if (pathname === '/api/models/body' && req.method === 'GET') {`,
|
|
386
386
|
` res.writeHead(200, { 'Content-Type': 'application/json' });`,
|
|
387
387
|
` try {`,
|
|
388
|
-
` const bodyDir = path.join(rootDir, 'assets', 'body'
|
|
388
|
+
` const bodyDir = path.join(rootDir, 'assets', 'body');`,
|
|
389
389
|
` const entries = await readdir(bodyDir, { withFileTypes: true }).catch(() => []);`,
|
|
390
390
|
` const models = entries.filter((e) => e.isDirectory()).map((e) => e.name);`,
|
|
391
391
|
` res.end(JSON.stringify({ models: models.length ? models : ['default'] }));`,
|
|
@@ -408,15 +408,9 @@ function generateInstanceFiles(options) {
|
|
|
408
408
|
` return;`,
|
|
409
409
|
` }`,
|
|
410
410
|
'',
|
|
411
|
-
` // Live2D assets route mapping: /live2d/<modelName>/... -> ./assets/body/model/<modelName>/...`,
|
|
412
|
-
` if (pathname.startsWith('/live2d/')) {`,
|
|
413
|
-
` const relativeAssetPath = pathname.slice('/live2d/'.length);`,
|
|
414
|
-
` candidatePaths.unshift(path.join(rootDir, 'assets', 'body', 'model', relativeAssetPath));`,
|
|
415
|
-
` candidatePaths.unshift(path.join(rootDir, 'public', 'live2d', relativeAssetPath));`,
|
|
416
|
-
` }`,
|
|
417
|
-
'',
|
|
418
411
|
` // Static files & Next.js apps/web export routing`,
|
|
419
|
-
` const
|
|
412
|
+
` const decodedPathname = decodeURIComponent(pathname);`,
|
|
413
|
+
` const normalizedPath = decodedPathname.replace(/^[/]+|[/]+$/g, '');`,
|
|
420
414
|
` const candidatePaths = [`,
|
|
421
415
|
` path.join(rootDir, 'public', normalizedPath, 'index.html'),`,
|
|
422
416
|
` path.join(rootDir, 'public', normalizedPath + '.html'),`,
|
|
@@ -428,6 +422,13 @@ function generateInstanceFiles(options) {
|
|
|
428
422
|
` candidatePaths.unshift(path.join(rootDir, 'public', 'index.html'));`,
|
|
429
423
|
` }`,
|
|
430
424
|
'',
|
|
425
|
+
` // Compatibility fallback for legacy /live2d/<modelName>/... -> ./assets/body/<modelName>/...`,
|
|
426
|
+
` if (pathname.startsWith('/live2d/')) {`,
|
|
427
|
+
` const relativeAssetPath = pathname.slice('/live2d/'.length);`,
|
|
428
|
+
` candidatePaths.unshift(path.join(rootDir, 'assets', 'body', relativeAssetPath));`,
|
|
429
|
+
` candidatePaths.unshift(path.join(rootDir, 'assets', 'body', 'model', relativeAssetPath));`,
|
|
430
|
+
` }`,
|
|
431
|
+
'',
|
|
431
432
|
` for (const candidate of candidatePaths) {`,
|
|
432
433
|
` try {`,
|
|
433
434
|
` const fileStat = await stat(candidate);`,
|
|
@@ -499,8 +500,8 @@ function generateInstanceFiles(options) {
|
|
|
499
500
|
const companionSlug = instanceName.toLowerCase().replace(/[^a-z0-9_-]/g, '') || 'default';
|
|
500
501
|
const createAssetsDirs = [];
|
|
501
502
|
if (hasBody) {
|
|
502
|
-
createAssetsDirs.push(`assets/body
|
|
503
|
-
readmeLines.push('', '### Body & Avatar Models', `Place your Live2D Cubism model assets into \`./assets/body
|
|
503
|
+
createAssetsDirs.push(`assets/body/${companionSlug}`);
|
|
504
|
+
readmeLines.push('', '### Body & Avatar Models', `Place your Live2D Cubism model assets into \`./assets/body/${companionSlug}/\`:`, '- `model.model3.json`', '- `model.moc3`', '- textures directory');
|
|
504
505
|
}
|
|
505
506
|
if (hasVoice) {
|
|
506
507
|
createAssetsDirs.push(`assets/voice/${companionSlug}`);
|
package/dist/generator.test.js
CHANGED
|
@@ -152,10 +152,10 @@ describe('Instance Generator Composition Invariants (Phase 3)', () => {
|
|
|
152
152
|
expect(pkg.dependencies['@siduri-x/voice']).toBeDefined();
|
|
153
153
|
// Body & voice asset directories requested
|
|
154
154
|
expect(files.createAssetsBodyDir).toBe(true);
|
|
155
|
-
expect(files.createAssetsDirs).toContain('assets/body/
|
|
155
|
+
expect(files.createAssetsDirs).toContain('assets/body/companion-full');
|
|
156
156
|
expect(files.createAssetsDirs).toContain('assets/voice/companion-full');
|
|
157
157
|
// README mentions Live2D model assets & prerequisites
|
|
158
|
-
expect(files['README.md']).toContain('assets/body/
|
|
158
|
+
expect(files['README.md']).toContain('assets/body/companion-full');
|
|
159
159
|
expect(files['README.md']).toContain('assets/voice/companion-full');
|
|
160
160
|
expect(files['README.md']).toContain('Prerequisites');
|
|
161
161
|
// Docker compose generated for memory & voice
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -26,7 +26,7 @@ const doctor_1 = require("./doctor");
|
|
|
26
26
|
const db_1 = require("./db");
|
|
27
27
|
const configurators_1 = require("./configurators");
|
|
28
28
|
const execFile = (0, node_util_1.promisify)(node_child_process_1.execFile);
|
|
29
|
-
exports.CLI_VERSION = '0.1.
|
|
29
|
+
exports.CLI_VERSION = '0.1.5';
|
|
30
30
|
exports.colors = {
|
|
31
31
|
cyan: '\u001b[36m',
|
|
32
32
|
dim: '\u001b[2m',
|
|
@@ -250,10 +250,10 @@ async function runCreateWizard(targetDir) {
|
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
252
|
else if (files.createAssetsBodyDir) {
|
|
253
|
-
await (0, promises_1.mkdir)(node_path_1.default.join(projectDir, 'assets/body
|
|
253
|
+
await (0, promises_1.mkdir)(node_path_1.default.join(projectDir, 'assets/body'), { recursive: true });
|
|
254
254
|
}
|
|
255
255
|
printSuccess(`Generated standalone files at ${projectDir}`);
|
|
256
|
-
// 5. Install
|
|
256
|
+
// 5. Install dependencies from registry
|
|
257
257
|
try {
|
|
258
258
|
await withTask('Installing dependencies (npm install)', async () => {
|
|
259
259
|
await execFile('npm', ['install', '--no-audit', '--no-fund'], { cwd: projectDir });
|
package/dist/release-check.js
CHANGED
|
@@ -17,18 +17,18 @@ function runReleaseCheck(repoRoot = node_path_1.default.resolve(__dirname, '../.
|
|
|
17
17
|
node_fs_1.default.rmSync(tempPackDir, { recursive: true, force: true });
|
|
18
18
|
node_fs_1.default.mkdirSync(tempPackDir, { recursive: true });
|
|
19
19
|
const canonicalPackages = [
|
|
20
|
-
{ name: '@siduri-x/core', dir: 'packages/core', isOrgan: false, tarName: 'siduri-x-core-1.0.
|
|
21
|
-
{ name: '@siduri-x/brain', dir: 'packages/organs/brain', isOrgan: true, tarName: 'siduri-x-brain-1.0.
|
|
22
|
-
{ name: '@siduri-x/memory', dir: 'packages/organs/memory', isOrgan: true, tarName: 'siduri-x-memory-1.0.
|
|
23
|
-
{ name: '@siduri-x/knowledge', dir: 'packages/organs/knowledge', isOrgan: true, tarName: 'siduri-x-knowledge-1.0.
|
|
24
|
-
{ name: '@siduri-x/behavior', dir: 'packages/organs/behavior', isOrgan: true, tarName: 'siduri-x-behavior-1.0.
|
|
25
|
-
{ name: '@siduri-x/ear', dir: 'packages/organs/ear', isOrgan: true, tarName: 'siduri-x-ear-1.0.
|
|
26
|
-
{ name: '@siduri-x/vision', dir: 'packages/organs/vision', isOrgan: true, tarName: 'siduri-x-vision-1.0.
|
|
27
|
-
{ name: '@siduri-x/hands', dir: 'packages/organs/hands', isOrgan: true, tarName: 'siduri-x-hands-1.0.
|
|
28
|
-
{ name: '@siduri-x/body', dir: 'packages/organs/body', isOrgan: true, tarName: 'siduri-x-body-1.0.
|
|
29
|
-
{ name: '@siduri-x/voice', dir: 'packages/organs/voice', isOrgan: true, tarName: 'siduri-x-voice-1.0.
|
|
30
|
-
{ name: '@siduri-x/observation', dir: 'packages/organs/observation', isOrgan: true, tarName: 'siduri-x-observation-1.0.
|
|
31
|
-
{ name: '@vxnus/siduri', dir: 'cli', isOrgan: false, tarName: 'vxnus-siduri-0.1.
|
|
20
|
+
{ name: '@siduri-x/core', dir: 'packages/core', isOrgan: false, tarName: 'siduri-x-core-1.0.2.tgz' },
|
|
21
|
+
{ name: '@siduri-x/brain', dir: 'packages/organs/brain', isOrgan: true, tarName: 'siduri-x-brain-1.0.2.tgz' },
|
|
22
|
+
{ name: '@siduri-x/memory', dir: 'packages/organs/memory', isOrgan: true, tarName: 'siduri-x-memory-1.0.2.tgz' },
|
|
23
|
+
{ name: '@siduri-x/knowledge', dir: 'packages/organs/knowledge', isOrgan: true, tarName: 'siduri-x-knowledge-1.0.2.tgz' },
|
|
24
|
+
{ name: '@siduri-x/behavior', dir: 'packages/organs/behavior', isOrgan: true, tarName: 'siduri-x-behavior-1.0.2.tgz' },
|
|
25
|
+
{ name: '@siduri-x/ear', dir: 'packages/organs/ear', isOrgan: true, tarName: 'siduri-x-ear-1.0.2.tgz' },
|
|
26
|
+
{ name: '@siduri-x/vision', dir: 'packages/organs/vision', isOrgan: true, tarName: 'siduri-x-vision-1.0.2.tgz' },
|
|
27
|
+
{ name: '@siduri-x/hands', dir: 'packages/organs/hands', isOrgan: true, tarName: 'siduri-x-hands-1.0.2.tgz' },
|
|
28
|
+
{ name: '@siduri-x/body', dir: 'packages/organs/body', isOrgan: true, tarName: 'siduri-x-body-1.0.4.tgz' },
|
|
29
|
+
{ name: '@siduri-x/voice', dir: 'packages/organs/voice', isOrgan: true, tarName: 'siduri-x-voice-1.0.3.tgz' },
|
|
30
|
+
{ name: '@siduri-x/observation', dir: 'packages/organs/observation', isOrgan: true, tarName: 'siduri-x-observation-1.0.2.tgz' },
|
|
31
|
+
{ name: '@vxnus/siduri', dir: 'cli', isOrgan: false, tarName: 'vxnus-siduri-0.1.5.tgz' },
|
|
32
32
|
];
|
|
33
33
|
let packagesChecked = 0;
|
|
34
34
|
let tarballsInspected = 0;
|
|
@@ -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"/><link rel="stylesheet" href="/_next/static/chunks/
|
|
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"/><link rel="stylesheet" href="/_next/static/chunks/1dc9n0p39yo65.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2kcqevsmv6kh2.js"/><script src="/_next/static/chunks/1_yae15ffa5f6.js" async=""></script><script src="/_next/static/chunks/3bx2gs3idjmo1.js" async=""></script><script src="/_next/static/chunks/32z87id9k6i2z.js" async=""></script><script src="/_next/static/chunks/turbopack-3eipe4c-imn5l.js" async=""></script><script src="/_next/static/chunks/0uwih7sydv413.js" async="" crossorigin=""></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><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?favicon.2vob68tjqpejf.ico" sizes="256x256" type="image/x-icon"/><link rel="icon" href="/favicon.ico"/><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/0cz1d0mv5g_q7.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/2kcqevsmv6kh2.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[81869,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"default\"]\n3:I[57830,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"default\"]\n4:I[44101,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[44101,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"ViewportBoundary\"]\na:I[44101,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"MetadataBoundary\"]\nc:I[4626,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/1dc9n0p39yo65.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/chunks/1dc9n0p39yo65.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0uwih7sydv413.js\",\"async\":true,\"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\":[[[\"$\",\"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.\"}]}]]}]}]],[]],\"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\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"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\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1dc9n0p39yo65.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"fySnDRfSgiBzStXXyXjTp\"}\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\"}]]\n"])</script><script>self.__next_f.push([1,"d:I[89236,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"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?favicon.2vob68tjqpejf.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"$Ld\",\"4\",{}]]\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"/><link rel="stylesheet" href="/_next/static/chunks/
|
|
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"/><link rel="stylesheet" href="/_next/static/chunks/1dc9n0p39yo65.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2kcqevsmv6kh2.js"/><script src="/_next/static/chunks/1_yae15ffa5f6.js" async=""></script><script src="/_next/static/chunks/3bx2gs3idjmo1.js" async=""></script><script src="/_next/static/chunks/32z87id9k6i2z.js" async=""></script><script src="/_next/static/chunks/turbopack-3eipe4c-imn5l.js" async=""></script><script src="/_next/static/chunks/0uwih7sydv413.js" async="" crossorigin=""></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><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?favicon.2vob68tjqpejf.ico" sizes="256x256" type="image/x-icon"/><link rel="icon" href="/favicon.ico"/><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/0cz1d0mv5g_q7.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/2kcqevsmv6kh2.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[81869,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"default\"]\n3:I[57830,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"default\"]\n4:I[44101,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[44101,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"ViewportBoundary\"]\na:I[44101,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"MetadataBoundary\"]\nc:I[4626,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/1dc9n0p39yo65.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/chunks/1dc9n0p39yo65.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0uwih7sydv413.js\",\"async\":true,\"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\":[[[\"$\",\"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.\"}]}]]}]}]],[]],\"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\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"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\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1dc9n0p39yo65.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"fySnDRfSgiBzStXXyXjTp\"}\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\"}]]\n"])</script><script>self.__next_f.push([1,"d:I[89236,[\"/_next/static/chunks/0uwih7sydv413.js\"],\"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?favicon.2vob68tjqpejf.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"$Ld\",\"4\",{}]]\n"])</script></body></html>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[80413,["/_next/static/chunks/0uwih7sydv413.js","/_next/static/chunks/2s3d1bfr0l4b0.js"],""]
|
|
3
3
|
e:X
|
|
4
|
-
0:{"buildId":"
|
|
4
|
+
0:{"buildId":"fySnDRfSgiBzStXXyXjTp","data":[{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"home-page","children":[["$","header",null,{"className":"home-nav","children":["$","div",null,{"className":"home-container home-nav-inner","children":[["$","$L2",null,{"href":"/","className":"brand-link","aria-label":"Siduri Home","children":[["$","span",null,{"className":"siduri-glyph","children":"✦"}],["$","span",null,{"children":"SIDURI"}]]}],["$","nav",null,{"className":"nav-links","aria-label":"Main Navigation","children":[["$","$L2",null,{"href":"/chat","children":"Chat"}],["$","$L2",null,{"href":"/operator","children":"Operator Console"}]]}],["$","div",null,{"children":["$","$L2",null,{"href":"/chat","className":"nav-cta","children":["Open Chat ",["$","span",null,{"children":"→"}]]}]}]]}]}],["$","main",null,{"children":[["$","section",null,{"className":"py-24 md:py-32 border-b border-[var(--siduri-border-subtle)] relative overflow-hidden","children":["$","div",null,{"className":"home-container relative z-10","children":["$","div",null,{"className":"max-w-3xl","children":[["$","div",null,{"className":"inline-flex items-center gap-2 px-3 py-1 rounded-full border border-[var(--siduri-border-ember)] bg-[var(--siduri-tint-low)] text-[var(--siduri-ember-light)] text-[10px] font-mono tracking-widest uppercase mb-8","children":[["$","span",null,{"className":"w-1.5 h-1.5 rounded-full bg-[var(--siduri-online)] shadow-[0_0_8px_rgba(127,199,154,0.6)]"}],"Local-First Companion · Explicit Architecture"]}],["$","h1",null,{"className":"text-4xl sm:text-5xl md:text-6xl font-normal font-serif text-[var(--siduri-text-primary)] tracking-tight leading-[1.15] mb-6","children":"A companion designed to remember deliberately."}],["$","p",null,{"className":"text-base sm:text-lg text-[var(--siduri-text-secondary)] font-sans leading-relaxed mb-10 max-w-2xl font-light","children":"Local-first context, inspectable memory governance, grounded evidence, and optional visual presence — engineered with explicit boundaries between identity and presentation."}],["$","div",null,{"className":"flex flex-wrap items-center gap-4","children":[["$","$L2",null,{"href":"/chat","className":"inline-flex items-center gap-3 px-6 py-3.5 rounded-xl bg-[var(--siduri-ember)] text-[#1b1619] font-sans font-semibold text-sm tracking-wide transition-all hover:brightness-110 shadow-[0_4px_20px_rgba(217,154,104,0.2)]","children":["Launch Private Chat",["$","span",null,{"className":"font-mono text-base","children":"→"}]]}],["$","$L2",null,{"href":"/operator","className":"inline-flex items-center gap-2.5 px-6 py-3.5 rounded-xl border border-[var(--siduri-border-subtle)] bg-[var(--siduri-surface)] text-[var(--siduri-text-primary)] font-sans font-medium text-sm transition-all hover:border-[var(--siduri-border-ember)] hover:bg-[var(--siduri-tint-low)]","children":[["$","span",null,{"children":"⌘"}],"Inspect Runtime"]}]]}]]}]}]}],["$","section",null,{"className":"py-20 md:py-28 border-b border-[var(--siduri-border-subtle)] bg-[#0e0e12]","children":["$","div",null,{"className":"home-container","children":[["$","div",null,{"className":"mb-14","children":[["$","p",null,{"className":"text-[10px] font-mono uppercase tracking-widest text-[var(--siduri-ember)] mb-2","children":"Core Principles"}],["$","h2",null,{"className":"text-2xl sm:text-3xl font-serif font-normal text-[var(--siduri-text-primary)]","children":"Governed intelligence with verifiable state."}]]}],["$","div",null,{"className":"grid grid-cols-1 md:grid-cols-2 gap-6","children":[["$","div",null,{"className":"p-8 rounded-2xl border border-[var(--siduri-border-subtle)] bg-[var(--siduri-surface)] transition-all hover:border-[rgba(255,255,255,0.15)]","children":[["$","div",null,{"className":"w-10 h-10 rounded-xl border border-[var(--siduri-border-ember)] bg-[var(--siduri-tint-low)] text-[var(--siduri-ember)] grid place-items-center font-serif text-lg mb-6","children":"✦"}],["$","h3",null,{"className":"text-lg font-medium text-[var(--siduri-text-primary)] mb-3","children":"Explicit Memory Governance"}],"$L3"]}],"$L4","$L5","$L6"]}]]}]}],"$L7","$L8","$L9"]}],"$La"]}],["$Lb"],"$Lc"]}],"isPartial":"$@d","staleTime":"$e","varyParams":null},{"rsc":"$Lf","isPartial":"$@10","staleTime":"$e","varyParams":null},{"rsc":"$L11","isPartial":"$@12","staleTime":"$e","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@13","rootVaryParams":null,"needsRuntimeRequest":"$@14"}
|
|
5
5
|
16:I[44101,["/_next/static/chunks/0uwih7sydv413.js"],"OutletBoundary"]
|
|
6
6
|
17:"$Sreact.suspense"
|
|
7
7
|
19:I[44101,["/_next/static/chunks/0uwih7sydv413.js"],"ViewportBoundary"]
|
|
@@ -9,7 +9,7 @@ e:X
|
|
|
9
9
|
1b:I[89236,["/_next/static/chunks/0uwih7sydv413.js"],"IconMark"]
|
|
10
10
|
1c:I[81869,["/_next/static/chunks/0uwih7sydv413.js"],"default"]
|
|
11
11
|
1d:I[57830,["/_next/static/chunks/0uwih7sydv413.js"],"default"]
|
|
12
|
-
:HL["/_next/static/chunks/
|
|
12
|
+
:HL["/_next/static/chunks/1dc9n0p39yo65.css","style"]
|
|
13
13
|
:HL["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","style"]
|
|
14
14
|
3:["$","p",null,{"className":"text-sm text-[var(--siduri-text-secondary)] leading-relaxed","children":"Memory is never silently accumulated. Facts, preferences, and behavioral directives are proposed in conversation and become permanent only upon explicit receipt approval."}]
|
|
15
15
|
4:["$","div",null,{"className":"p-8 rounded-2xl border border-[var(--siduri-border-subtle)] bg-[var(--siduri-surface)] transition-all hover:border-[rgba(255,255,255,0.15)]","children":[["$","div",null,{"className":"w-10 h-10 rounded-xl border border-emerald-500/30 bg-emerald-500/10 text-emerald-400 grid place-items-center font-mono text-sm mb-6","children":"[#]"}],["$","h3",null,{"className":"text-lg font-medium text-[var(--siduri-text-primary)] mb-3","children":"Grounded Knowledge & Citations"}],["$","p",null,{"className":"text-sm text-[var(--siduri-text-secondary)] leading-relaxed","children":"Assertions remain tethered to source evidence. Claims carry verifiable citations with intact uncertainty indicators rather than fabricating authority."}]]}]
|
|
@@ -22,7 +22,7 @@ a:["$","footer",null,{"className":"py-14 bg-[#09090c]","children":["$","div",nul
|
|
|
22
22
|
b:["$","script","script-0",{"src":"/_next/static/chunks/2s3d1bfr0l4b0.js","async":true}]
|
|
23
23
|
c:["$","$L16",null,{"children":["$","$17",null,{"name":"Next.MetadataOutlet","children":"$@18"}]}]
|
|
24
24
|
f:["$","$1","h",{"children":[null,["$","$L19",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L1a",null,{"children":["$","$17",null,{"name":"Next.Metadata","children":[["$","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?favicon.2vob68tjqpejf.ico","sizes":"256x256","type":"image/x-icon"}],["$","link","3",{"rel":"icon","href":"/favicon.ico"}],["$","$L1b","4",{}]]}]}]}],null]}]
|
|
25
|
-
11:["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/
|
|
25
|
+
11:["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/1dc9n0p39yo65.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/0uwih7sydv413.js","async":true}]],["$","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&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$L1c",null,{"parallelRouterKey":"children","template":["$","$L1d",null,{}],"notFound":[[["$","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."}]}]]}]}]],[]]}]}]]}]]}]
|
|
26
26
|
15:["$","p",null,{"className":"text-xs text-[var(--siduri-text-muted)] leading-normal","children":"Voice, subtitles & optional Live2D."}]
|
|
27
27
|
18:null
|
|
28
28
|
14:true
|