siduri 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/LICENSE +6 -0
  2. package/README.md +84 -0
  3. package/dist/builtin-manifests.d.ts +2 -0
  4. package/dist/builtin-manifests.js +524 -0
  5. package/dist/clean-machine-e2e.test.d.ts +1 -0
  6. package/dist/clean-machine-e2e.test.js +160 -0
  7. package/dist/clean-machine-smoke.test.d.ts +1 -0
  8. package/dist/clean-machine-smoke.test.js +165 -0
  9. package/dist/colors.d.ts +8 -0
  10. package/dist/colors.js +11 -0
  11. package/dist/configurators/behavior.d.ts +2 -0
  12. package/dist/configurators/behavior.js +77 -0
  13. package/dist/configurators/body.d.ts +2 -0
  14. package/dist/configurators/body.js +107 -0
  15. package/dist/configurators/brain.d.ts +6 -0
  16. package/dist/configurators/brain.js +80 -0
  17. package/dist/configurators/ear.d.ts +2 -0
  18. package/dist/configurators/ear.js +43 -0
  19. package/dist/configurators/hands.d.ts +2 -0
  20. package/dist/configurators/hands.js +43 -0
  21. package/dist/configurators/index.d.ts +24 -0
  22. package/dist/configurators/index.js +78 -0
  23. package/dist/configurators/knowledge.d.ts +6 -0
  24. package/dist/configurators/knowledge.js +146 -0
  25. package/dist/configurators/memory.d.ts +2 -0
  26. package/dist/configurators/memory.js +26 -0
  27. package/dist/configurators/mouth.d.ts +2 -0
  28. package/dist/configurators/mouth.js +35 -0
  29. package/dist/configurators/observation.d.ts +2 -0
  30. package/dist/configurators/observation.js +38 -0
  31. package/dist/configurators/types.d.ts +12 -0
  32. package/dist/configurators/types.js +2 -0
  33. package/dist/configurators/vision.d.ts +2 -0
  34. package/dist/configurators/vision.js +47 -0
  35. package/dist/configurators/voice.d.ts +2 -0
  36. package/dist/configurators/voice.js +373 -0
  37. package/dist/configurators.test.d.ts +1 -0
  38. package/dist/configurators.test.js +464 -0
  39. package/dist/db.d.ts +13 -0
  40. package/dist/db.js +15 -0
  41. package/dist/discovery.d.ts +13 -0
  42. package/dist/discovery.js +85 -0
  43. package/dist/discovery.test.d.ts +1 -0
  44. package/dist/discovery.test.js +69 -0
  45. package/dist/doctor-db.test.d.ts +1 -0
  46. package/dist/doctor-db.test.js +52 -0
  47. package/dist/doctor.d.ts +19 -0
  48. package/dist/doctor.js +266 -0
  49. package/dist/generator.d.ts +23 -0
  50. package/dist/generator.js +1094 -0
  51. package/dist/generator.test.d.ts +1 -0
  52. package/dist/generator.test.js +252 -0
  53. package/dist/index.d.ts +18 -0
  54. package/dist/index.js +607 -0
  55. package/dist/manifest.d.ts +33 -0
  56. package/dist/manifest.js +40 -0
  57. package/dist/project-dir.test.d.ts +1 -0
  58. package/dist/project-dir.test.js +37 -0
  59. package/dist/providers/knowledge-hub.d.ts +44 -0
  60. package/dist/providers/knowledge-hub.js +162 -0
  61. package/dist/providers/openrouter.d.ts +32 -0
  62. package/dist/providers/openrouter.js +201 -0
  63. package/dist/release-check.d.ts +9 -0
  64. package/dist/release-check.js +128 -0
  65. package/dist/runtime-parity.test.d.ts +1 -0
  66. package/dist/runtime-parity.test.js +141 -0
  67. package/dist/schema-validator.d.ts +9 -0
  68. package/dist/schema-validator.js +107 -0
  69. package/dist/web-dist/404/index.html +1 -0
  70. package/dist/web-dist/404.html +1 -0
  71. package/dist/web-dist/__next.__PAGE__.txt +34 -0
  72. package/dist/web-dist/__next._full.txt +32 -0
  73. package/dist/web-dist/__next._tree.txt +4 -0
  74. package/dist/web-dist/_next/static/4aL_iP3FHsLSyHzCnRQYD/_buildManifest.js +1 -0
  75. package/dist/web-dist/_next/static/4aL_iP3FHsLSyHzCnRQYD/_ssgManifest.js +1 -0
  76. package/dist/web-dist/_next/static/chunks/136-1d10af93b770a1c8.js +52 -0
  77. package/dist/web-dist/_next/static/chunks/1629039a.f535b3ff45566416.js +1 -0
  78. package/dist/web-dist/_next/static/chunks/202.59b8eb8a8c45f711.js +1 -0
  79. package/dist/web-dist/_next/static/chunks/2be4ccb0.ab2975eb50b4e166.js +1 -0
  80. package/dist/web-dist/_next/static/chunks/411.d68b2e48424f1e47.js +1 -0
  81. package/dist/web-dist/_next/static/chunks/426-9f7f6e7fffd4c3c3.js +1 -0
  82. package/dist/web-dist/_next/static/chunks/563b947f-8e2871a2ab7cd91e.js +1 -0
  83. package/dist/web-dist/_next/static/chunks/92e71660.11f182d50bce2be0.js +342 -0
  84. package/dist/web-dist/_next/static/chunks/app/_global-error/page-bce6d30fb2b1a3b0.js +1 -0
  85. package/dist/web-dist/_next/static/chunks/app/_not-found/page-74658f4988eabcc7.js +1 -0
  86. package/dist/web-dist/_next/static/chunks/app/chat/page-ab56048b707a3ddd.js +34 -0
  87. package/dist/web-dist/_next/static/chunks/app/layout-14f1a3f31e58be17.js +1 -0
  88. package/dist/web-dist/_next/static/chunks/app/operator/page-6b2d0ba884183ad7.js +1 -0
  89. package/dist/web-dist/_next/static/chunks/app/page-fc4bf56cf33ae27b.js +1 -0
  90. package/dist/web-dist/_next/static/chunks/framework-7afb7035d9872ea0.js +1 -0
  91. package/dist/web-dist/_next/static/chunks/main-8553b996986f1210.js +5 -0
  92. package/dist/web-dist/_next/static/chunks/main-app-9e6a144626e5a5b9.js +1 -0
  93. package/dist/web-dist/_next/static/chunks/next/dist/client/components/builtin/app-error-bce6d30fb2b1a3b0.js +1 -0
  94. package/dist/web-dist/_next/static/chunks/next/dist/client/components/builtin/forbidden-bce6d30fb2b1a3b0.js +1 -0
  95. package/dist/web-dist/_next/static/chunks/next/dist/client/components/builtin/global-error-68ea4ac05dcaf701.js +1 -0
  96. package/dist/web-dist/_next/static/chunks/next/dist/client/components/builtin/not-found-bce6d30fb2b1a3b0.js +1 -0
  97. package/dist/web-dist/_next/static/chunks/next/dist/client/components/builtin/unauthorized-bce6d30fb2b1a3b0.js +1 -0
  98. package/dist/web-dist/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  99. package/dist/web-dist/_next/static/chunks/webpack-9073f434bc17ce16.js +1 -0
  100. package/dist/web-dist/_next/static/css/ceeb8e5596664b11.css +1 -0
  101. package/dist/web-dist/_not-found/__next._full.txt +17 -0
  102. package/dist/web-dist/_not-found/__next._not-found.__PAGE__.txt +23 -0
  103. package/dist/web-dist/_not-found/__next._tree.txt +3 -0
  104. package/dist/web-dist/_not-found/index.html +1 -0
  105. package/dist/web-dist/_not-found/index.txt +17 -0
  106. package/dist/web-dist/apple-icon.png +0 -0
  107. package/dist/web-dist/apple-touch-icon.png +0 -0
  108. package/dist/web-dist/chat/__next._full.txt +18 -0
  109. package/dist/web-dist/chat/__next._tree.txt +3 -0
  110. package/dist/web-dist/chat/__next.chat.__PAGE__.txt +24 -0
  111. package/dist/web-dist/chat/index.html +1 -0
  112. package/dist/web-dist/chat/index.txt +18 -0
  113. package/dist/web-dist/favicon.ico +0 -0
  114. package/dist/web-dist/favicon.svg +4 -0
  115. package/dist/web-dist/icon.svg +4 -0
  116. package/dist/web-dist/index.html +1 -0
  117. package/dist/web-dist/index.txt +32 -0
  118. package/dist/web-dist/live2d/live2dcubismcore.min.js +9 -0
  119. package/dist/web-dist/logo-circle.png +0 -0
  120. package/dist/web-dist/logo-circle.svg +4 -0
  121. package/dist/web-dist/logo-white.svg +3 -0
  122. package/dist/web-dist/logo.png +0 -0
  123. package/dist/web-dist/logo.svg +3 -0
  124. package/dist/web-dist/operator/__next._full.txt +18 -0
  125. package/dist/web-dist/operator/__next._tree.txt +3 -0
  126. package/dist/web-dist/operator/__next.operator.__PAGE__.txt +24 -0
  127. package/dist/web-dist/operator/index.html +1 -0
  128. package/dist/web-dist/operator/index.txt +18 -0
  129. package/dist/web-template.d.ts +2 -0
  130. package/dist/web-template.js +589 -0
  131. package/package.json +44 -0
package/LICENSE ADDED
@@ -0,0 +1,6 @@
1
+ Copyright (c) 2026 VXNUS Creative Technology Studio. All rights reserved.
2
+
3
+ This is an experimental prerelease of Siduri. It is provided for evaluation
4
+ and development only. No production use, redistribution, or sublicensing is
5
+ permitted without written authorization from VXNUS Creative Technology
6
+ Studio.
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # Siduri CLI (`@vxnus/siduri`)
2
+
3
+ Experimental CLI for creating, diagnosing, and managing standalone Siduri companions powered by the `@sidurijs/*` organ ecosystem.
4
+
5
+ Requires Node.js >=22.16.0.
6
+
7
+ ```bash
8
+ npx @vxnus/siduri create my-companion
9
+ ```
10
+
11
+ ## Prerequisites
12
+
13
+ - **Node.js**: `v22.16.0` or newer
14
+ - **LLM API Key**: e.g. `OPENROUTER_API_KEY` for Brain organ
15
+ - **Optional Local Services**:
16
+ - **VOICEVOX**: For voice synthesis (auto-downloaded at runtime by default, or connect to standalone app).
17
+ - Storage is powered by embedded SQLite with WAL mode and built-in FTS5 (`siduri.sqlite`). No external database servers or Docker containers are required.
18
+
19
+ ## Features
20
+
21
+ - **Manifest-Driven Organ Discovery**: Dynamically discovers installed `@sidurijs/*` organs and generates custom, standalone ESM instance code.
22
+ - **Interactive Configuration Wizard**: Model catalog discovery for OpenRouter, manifest inspection for E Knowledge Hub, and guided organ parameters.
23
+ - **Zero Monolithic Bundling**: Scaffolds standard Node.js ESM projects with explicit dependency trees.
24
+ - **Diagnostics (`siduri doctor`)**: Runs environment variable validation, schema conformance checks, storage writeability verification, external service endpoint probing, and organ health probes.
25
+ - **Zero-Config Database**: Powered by embedded SQLite (`siduri.sqlite`). Memory and persistent state are initialized automatically at startup without manual SQL migrations.
26
+
27
+ ## CLI Usage
28
+
29
+ ### 1. Create a Standalone Companion
30
+
31
+ ```bash
32
+ npx @vxnus/siduri create [directory]
33
+ ```
34
+
35
+ The interactive wizard allows you to name your companion, configure organ providers and models, and inspect Knowledge manifests. It generates:
36
+
37
+ ```text
38
+ my-companion/
39
+ ├── package.json # ESM package referencing only selected @sidurijs/* organs
40
+ ├── siduri.config.json # Selected organ configurations
41
+ ├── siduri.schema.json # Composed JSON Schema from organ manifests
42
+ ├── .env.example # Only environment variables required by selected organs
43
+ ├── README.md # Instance-specific guide
44
+ └── src/
45
+ └── index.js # Direct runtime bootstrapping with explicit organ factories
46
+ ```
47
+
48
+ ### 2. Run Diagnostics
49
+
50
+ ```bash
51
+ npx siduri doctor [directory]
52
+ ```
53
+
54
+ Inspects active configuration, checks required/optional environment variables, and executes health probes.
55
+
56
+ ### 3. Database Management
57
+
58
+ ```bash
59
+ npx siduri db push [directory]
60
+ npx siduri db reset [directory]
61
+ ```
62
+
63
+ SQLite manages migrations and schemas automatically in-process.
64
+
65
+ ### 4. Instance Reset
66
+
67
+ ```bash
68
+ npx siduri reset [directory]
69
+ ```
70
+
71
+ Clears SQLite databases and cached state to return the companion to Blank Slate.
72
+
73
+ ## Local Development
74
+
75
+ From the repository root:
76
+
77
+ ```bash
78
+ pnpm --filter @vxnus/siduri build
79
+ pnpm --filter @vxnus/siduri test
80
+ ```
81
+
82
+ ## License
83
+
84
+ Licensed under the [Apache License, Version 2.0](./LICENSE).
@@ -0,0 +1,2 @@
1
+ import { OrganManifest } from './manifest';
2
+ export declare const BUILTIN_ORGAN_MANIFESTS: OrganManifest[];
@@ -0,0 +1,524 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BUILTIN_ORGAN_MANIFESTS = void 0;
4
+ exports.BUILTIN_ORGAN_MANIFESTS = [
5
+ {
6
+ name: '@sidurijs/self',
7
+ organType: 'behavior',
8
+ version: '2.0.12',
9
+ displayName: 'Self & Persona (Identity & Directives)',
10
+ description: 'Autonomous persona compiler, relational stances, and .self asset loader',
11
+ entrypoint: './dist/index.js',
12
+ factory: 'ActiveSelfCompiler',
13
+ configKey: 'behavior',
14
+ configSchema: {
15
+ type: 'object',
16
+ required: ['provider'],
17
+ properties: {
18
+ provider: {
19
+ type: 'string',
20
+ enum: ['active_self', 'none']
21
+ },
22
+ mode: {
23
+ type: 'string',
24
+ enum: ['blank_slate', 'custom']
25
+ },
26
+ archetype: {
27
+ type: 'string'
28
+ },
29
+ ethos: {
30
+ type: 'string'
31
+ },
32
+ directive: {
33
+ type: 'string'
34
+ },
35
+ selfPath: {
36
+ type: 'string'
37
+ }
38
+ }
39
+ },
40
+ environment: [],
41
+ services: [],
42
+ database: null,
43
+ healthCheck: null
44
+ },
45
+ {
46
+ name: '@sidurijs/body',
47
+ organType: 'body',
48
+ version: '2.1.0',
49
+ displayName: 'Body (Live2D & VRM Avatar State)',
50
+ description: 'Renderer-agnostic avatar expression and embodiment event adapter supporting Live2D (.model3.json) and VRM (.vrm)',
51
+ entrypoint: './dist/index.js',
52
+ factory: 'NeutralBodyOrgan',
53
+ configKey: 'body',
54
+ configSchema: {
55
+ type: 'object',
56
+ required: ['provider'],
57
+ properties: {
58
+ provider: {
59
+ type: 'string',
60
+ enum: ['live2d', 'vrm', 'none']
61
+ },
62
+ format: {
63
+ type: 'string',
64
+ enum: ['live2d', 'vrm', 'auto'],
65
+ default: 'auto'
66
+ },
67
+ initialExpression: {
68
+ type: 'string',
69
+ default: 'neutral'
70
+ },
71
+ modelPath: {
72
+ type: 'string',
73
+ description: 'Path to local Live2D Cubism (.model3.json) or VRM (.vrm) model file'
74
+ },
75
+ modelUrl: {
76
+ type: 'string',
77
+ description: 'Relative web or remote HTTP URL to Live2D Cubism (.model3.json) or VRM (.vrm) model file'
78
+ },
79
+ vrm: {
80
+ type: 'object',
81
+ properties: {
82
+ specVersion: {
83
+ type: 'string',
84
+ enum: ['0.x', '1.0', 'auto'],
85
+ default: 'auto'
86
+ },
87
+ lookAtMode: {
88
+ type: 'string',
89
+ enum: ['camera', 'cursor', 'head', 'none'],
90
+ default: 'camera'
91
+ },
92
+ defaultPose: {
93
+ type: 'string'
94
+ },
95
+ expressionMapping: {
96
+ type: 'object'
97
+ }
98
+ }
99
+ }
100
+ }
101
+ },
102
+ environment: [],
103
+ services: [],
104
+ database: null,
105
+ healthCheck: null
106
+ },
107
+ {
108
+ name: '@sidurijs/brain',
109
+ organType: 'brain',
110
+ version: '2.0.13',
111
+ displayName: 'Brain (Cognition & Planning)',
112
+ description: 'Provider-neutral LLM reasoning, response planning, and proposal generation',
113
+ entrypoint: './dist/index.js',
114
+ factory: 'OpenRouterBrain',
115
+ configKey: 'brain',
116
+ configSchema: {
117
+ type: 'object',
118
+ required: ['provider', 'model'],
119
+ properties: {
120
+ provider: {
121
+ type: 'string',
122
+ enum: ['openrouter', 'openai-compatible']
123
+ },
124
+ model: {
125
+ type: 'string'
126
+ },
127
+ apiKey: {
128
+ type: 'string'
129
+ },
130
+ apiKeyEnv: {
131
+ type: 'string',
132
+ default: 'OPENROUTER_API_KEY'
133
+ },
134
+ baseUrl: {
135
+ type: 'string'
136
+ }
137
+ }
138
+ },
139
+ environment: [
140
+ {
141
+ name: 'OPENROUTER_API_KEY',
142
+ required: false,
143
+ secret: true,
144
+ description: 'API key for OpenRouter managed routing'
145
+ },
146
+ {
147
+ name: 'OPENAI_COMPATIBLE_API_KEY',
148
+ required: false,
149
+ secret: true,
150
+ description: 'API key for OpenAI-compatible endpoint'
151
+ }
152
+ ],
153
+ services: [
154
+ {
155
+ name: 'LLM Inference API',
156
+ kind: 'http_service',
157
+ optional: false
158
+ }
159
+ ],
160
+ database: null,
161
+ healthCheck: 'probeBrainHealth'
162
+ },
163
+ {
164
+ name: '@sidurijs/ear',
165
+ organType: 'ear',
166
+ version: '2.0.3',
167
+ displayName: 'Ear (Perception Ingress)',
168
+ description: 'Multi-modal sensory input ingestion, transcription bounds, and mime validation',
169
+ entrypoint: './dist/index.js',
170
+ factory: 'DefaultEarOrgan',
171
+ configKey: 'ear',
172
+ configSchema: {
173
+ type: 'object',
174
+ properties: {
175
+ defaultSource: {
176
+ type: 'string',
177
+ default: 'text_chat'
178
+ },
179
+ maxTextLength: {
180
+ type: 'number',
181
+ default: 4000
182
+ },
183
+ maxAudioBytes: {
184
+ type: 'number',
185
+ default: 10485760
186
+ }
187
+ }
188
+ },
189
+ environment: [],
190
+ services: [],
191
+ database: null,
192
+ healthCheck: null
193
+ },
194
+ {
195
+ name: '@sidurijs/hands',
196
+ organType: 'hands',
197
+ version: '2.0.2',
198
+ displayName: 'Hands (MCP Tool Execution)',
199
+ description: 'Model Context Protocol tool management and cryptographically authorized action execution',
200
+ entrypoint: './dist/index.js',
201
+ factory: 'DefaultHandsOrgan',
202
+ configKey: 'hands',
203
+ configSchema: {
204
+ type: 'object',
205
+ properties: {
206
+ defaultTimeoutMs: {
207
+ type: 'number',
208
+ default: 10000
209
+ },
210
+ providers: {
211
+ type: 'array',
212
+ items: {
213
+ type: 'object',
214
+ required: ['serverName'],
215
+ properties: {
216
+ serverName: {
217
+ type: 'string'
218
+ },
219
+ baseUrl: {
220
+ type: 'string'
221
+ },
222
+ command: {
223
+ type: 'string'
224
+ },
225
+ args: {
226
+ type: 'array',
227
+ items: {
228
+ type: 'string'
229
+ }
230
+ }
231
+ }
232
+ }
233
+ }
234
+ }
235
+ },
236
+ environment: [
237
+ {
238
+ name: 'ACTION_POLICY_SECRET',
239
+ required: false,
240
+ secret: true,
241
+ description: 'HMAC secret key for signing and verifying action execution capabilities (required in production)'
242
+ }
243
+ ],
244
+ services: [],
245
+ database: null,
246
+ healthCheck: 'probeHandsHealth'
247
+ },
248
+ {
249
+ name: '@sidurijs/knowledge',
250
+ organType: 'knowledge',
251
+ version: '2.0.6',
252
+ displayName: 'Knowledge (Sovereign Life DB & Knowledge Packs)',
253
+ description: 'Sovereign Life Database (finances, inventory, schedule, preferences) and portable E knowledge packs',
254
+ entrypoint: './dist/index.js',
255
+ factory: 'UnifiedKnowledgeOrgan',
256
+ configKey: 'knowledge',
257
+ configSchema: {
258
+ type: 'object',
259
+ properties: {
260
+ lifeDatabase: {
261
+ type: 'boolean',
262
+ default: true
263
+ },
264
+ dbPath: {
265
+ type: 'string',
266
+ default: 'siduri.sqlite'
267
+ },
268
+ provider: {
269
+ type: 'string',
270
+ enum: ['unified', 'e-knowledge', 'e-remote', 'e-hub', 'none'],
271
+ default: 'unified'
272
+ },
273
+ pack: {
274
+ type: 'object'
275
+ },
276
+ packPath: {
277
+ type: 'string'
278
+ },
279
+ baseUrl: {
280
+ type: 'string'
281
+ },
282
+ registryUrl: {
283
+ type: 'string'
284
+ },
285
+ packId: {
286
+ type: 'string'
287
+ },
288
+ timeoutMs: {
289
+ type: 'number',
290
+ default: 5000
291
+ },
292
+ preferredMode: {
293
+ type: 'string',
294
+ enum: ['lexical', 'semantic', 'hybrid'],
295
+ default: 'lexical'
296
+ }
297
+ }
298
+ },
299
+ environment: [
300
+ {
301
+ name: 'SIDURI_KNOWLEDGE_PACK',
302
+ required: false,
303
+ secret: false,
304
+ description: 'Path to local E knowledge pack'
305
+ },
306
+ {
307
+ name: 'SIDURI_KNOWLEDGE_REGISTRY_URL',
308
+ required: false,
309
+ secret: false,
310
+ default: 'https://e.vxnus.xyz/api/v1/knowledge',
311
+ description: 'URL of the E Knowledge Hub registry'
312
+ }
313
+ ],
314
+ services: [
315
+ {
316
+ name: 'E Knowledge Hub',
317
+ kind: 'http_service',
318
+ optional: true
319
+ }
320
+ ],
321
+ database: {
322
+ engine: 'sqlite'
323
+ },
324
+ healthCheck: null
325
+ },
326
+ {
327
+ name: '@sidurijs/archive',
328
+ organType: 'archive',
329
+ version: '1.0.0',
330
+ displayName: 'Archive (Interaction Audit Ledger)',
331
+ description: 'Cold append-only interaction audit trail and FTS5 full-text search (RFC VX-26-13)',
332
+ entrypoint: './dist/index.js',
333
+ factory: 'SqliteArchiveLedger',
334
+ configKey: 'archive',
335
+ configSchema: {
336
+ type: 'object',
337
+ required: ['provider'],
338
+ properties: {
339
+ provider: {
340
+ type: 'string',
341
+ enum: ['sqlite']
342
+ },
343
+ databasePath: {
344
+ type: 'string',
345
+ default: 'siduri.sqlite'
346
+ }
347
+ }
348
+ },
349
+ environment: [],
350
+ services: [],
351
+ database: {
352
+ engine: 'sqlite'
353
+ },
354
+ healthCheck: null
355
+ },
356
+ {
357
+ name: '@sidurijs/observation',
358
+ organType: 'observation',
359
+ version: '2.0.1',
360
+ displayName: 'Observation (Screen Perception & Frame Ingest)',
361
+ description: 'Screen capture frame ingest, SHA-256 deduplication, and visual grounding for Eyes/Vision',
362
+ entrypoint: './dist/index.js',
363
+ factory: 'FixtureObservationOrgan',
364
+ configKey: 'observation',
365
+ configSchema: {
366
+ type: 'object',
367
+ properties: {}
368
+ },
369
+ environment: [],
370
+ services: [],
371
+ database: null,
372
+ healthCheck: null
373
+ },
374
+ {
375
+ name: '@sidurijs/vision',
376
+ organType: 'vision',
377
+ version: '2.0.1',
378
+ displayName: 'Vision (Visual Perception & OCR)',
379
+ description: 'Image inspection, cropping, and multi-pass OCR perception adapter',
380
+ entrypoint: './dist/index.js',
381
+ factory: 'OpenRouterVisionAdapter',
382
+ configKey: 'vision',
383
+ configSchema: {
384
+ type: 'object',
385
+ required: ['provider'],
386
+ properties: {
387
+ provider: {
388
+ type: 'string',
389
+ enum: ['openrouter', 'none']
390
+ },
391
+ model: {
392
+ type: 'string',
393
+ default: 'gpt-4-vision'
394
+ },
395
+ apiKey: {
396
+ type: 'string'
397
+ },
398
+ baseUrl: {
399
+ type: 'string'
400
+ }
401
+ }
402
+ },
403
+ environment: [
404
+ {
405
+ name: 'OPENROUTER_API_KEY',
406
+ required: false,
407
+ secret: true,
408
+ description: 'API key for vision model inference'
409
+ }
410
+ ],
411
+ services: [
412
+ {
413
+ name: 'Vision Inference API',
414
+ kind: 'http_service',
415
+ optional: false
416
+ }
417
+ ],
418
+ database: null,
419
+ healthCheck: 'probeVisionHealth'
420
+ },
421
+ {
422
+ name: '@sidurijs/voice',
423
+ organType: 'voice',
424
+ version: '2.0.2',
425
+ displayName: 'Voice (Speech Synthesis & Voice Conversion)',
426
+ description: 'Queued speech synthesis and audio rendering lifecycle adapter (VOICEVOX, RVC)',
427
+ entrypoint: './dist/index.js',
428
+ factory: 'VoicevoxAdapter',
429
+ configKey: 'voice',
430
+ configSchema: {
431
+ type: 'object',
432
+ required: ['provider'],
433
+ properties: {
434
+ provider: {
435
+ type: 'string',
436
+ enum: ['voicevox', 'edge-tts', 'kokoro', 'piper', 'none']
437
+ },
438
+ speakerId: {
439
+ type: 'number',
440
+ default: 1
441
+ },
442
+ baseUrl: {
443
+ type: 'string',
444
+ default: 'http://localhost:50021'
445
+ },
446
+ maxQueueDepth: {
447
+ type: 'number',
448
+ default: 50
449
+ },
450
+ rvc: {
451
+ type: 'object',
452
+ properties: {
453
+ enabled: { type: 'boolean', default: false },
454
+ serviceUrl: { type: 'string', default: 'http://localhost:50055' },
455
+ modelName: { type: 'string' },
456
+ modelPath: { type: 'string' },
457
+ indexPath: { type: 'string' },
458
+ pitchShift: { type: 'number', default: 0 },
459
+ f0Method: { type: 'string', enum: ['rmvpe', 'pm', 'harvest', 'crepe'], default: 'rmvpe' },
460
+ indexRate: { type: 'number', default: 0.75 }
461
+ }
462
+ }
463
+ }
464
+ },
465
+ environment: [
466
+ {
467
+ name: 'VOICEVOX_URL',
468
+ required: false,
469
+ secret: false,
470
+ default: 'http://localhost:50021',
471
+ description: 'Base URL of the running VOICEVOX engine'
472
+ },
473
+ {
474
+ name: 'RVC_SERVICE_URL',
475
+ required: false,
476
+ secret: false,
477
+ default: 'http://localhost:50055',
478
+ description: 'Base URL of headless RVC voice conversion microservice'
479
+ }
480
+ ],
481
+ services: [
482
+ {
483
+ name: 'VOICEVOX Engine',
484
+ kind: 'http_service',
485
+ optional: false
486
+ },
487
+ {
488
+ name: 'RVC Headless Service',
489
+ kind: 'http_service',
490
+ optional: true
491
+ }
492
+ ],
493
+ database: null,
494
+ healthCheck: null
495
+ },
496
+ {
497
+ name: '@sidurijs/mouth',
498
+ organType: 'mouth',
499
+ version: '2.0.2',
500
+ displayName: 'Mouth (Communication & UI Delivery)',
501
+ description: 'Decoupled output delivery organ formatting cognitive decisions for web interfaces',
502
+ entrypoint: './dist/index.js',
503
+ factory: 'DefaultMouthOrgan',
504
+ configKey: 'mouth',
505
+ configSchema: {
506
+ type: 'object',
507
+ properties: {
508
+ defaultMedium: {
509
+ type: 'string',
510
+ enum: ['web'],
511
+ default: 'web'
512
+ },
513
+ maxTextLength: {
514
+ type: 'number',
515
+ default: 8000
516
+ }
517
+ }
518
+ },
519
+ environment: [],
520
+ services: [],
521
+ database: null,
522
+ healthCheck: null
523
+ }
524
+ ];
@@ -0,0 +1 @@
1
+ export {};