@aiwg/cli 2026.10.5 → 2026.10.7
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/agentic/code/addons/composition-engine/lib/runtime.mjs +1401 -0
- package/agentic/code/addons/composition-engine/lib/validator.mjs +513 -0
- package/agentic/code/addons/composition-engine/schemas/flow-graph.schema.json +372 -0
- package/agentic/code/providers/model-capabilities.v1.json +74 -50
- package/bin/aiwg.mjs +7 -3
- package/dist/src/a2a/agent-card.js +11 -0
- package/dist/src/api/index.d.ts +1 -0
- package/dist/src/api/index.js +1 -0
- package/dist/src/artifacts/browser-export.js +1 -0
- package/dist/src/artifacts/citation-parser.js +8 -1
- package/dist/src/artifacts/cli.js +57 -6
- package/dist/src/artifacts/fortemi-core-query-adapter.js +2 -0
- package/dist/src/artifacts/fortemi-core-sync.js +26 -8
- package/dist/src/artifacts/fortemi-shard-contract/2.2.0/contract.json +103 -0
- package/dist/src/artifacts/fortemi-shard-contract/2.2.0/full-v1-embedding-config.schema.json +212 -0
- package/dist/src/artifacts/fortemi-shard-contract/2.2.0/full-v1-embedding-set.schema.json +240 -0
- package/dist/src/artifacts/fortemi-shard-contract/2.2.0/full-v1-manifest.schema.json +451 -0
- package/dist/src/artifacts/fortemi-shard-export.js +284 -0
- package/dist/src/artifacts/graph-query.js +18 -8
- package/dist/src/artifacts/index-adapters.js +339 -0
- package/dist/src/artifacts/index-builder.js +143 -14
- package/dist/src/artifacts/index-files.js +15 -4
- package/dist/src/artifacts/index-preparation.js +2 -0
- package/dist/src/artifacts/index-reader.js +44 -0
- package/dist/src/artifacts/index-refresh.js +114 -55
- package/dist/src/artifacts/index-status.js +20 -5
- package/dist/src/artifacts/memory-maintenance.js +503 -0
- package/dist/src/artifacts/prebuilt-relations.js +3 -1
- package/dist/src/artifacts/query-engine.js +263 -108
- package/dist/src/artifacts/relations-builder.js +2 -2
- package/dist/src/artifacts/source-graph.js +2 -2
- package/dist/src/artifacts/types.js +9 -1
- package/dist/src/auth/client.js +5 -1
- package/dist/src/auth/credential-store.js +5 -1
- package/dist/src/auth/sensitive-input.js +151 -0
- package/dist/src/channel/manager.mjs +3 -0
- package/dist/src/cli/handlers/agentcard.js +47 -25
- package/dist/src/cli/handlers/auth.js +22 -2
- package/dist/src/cli/handlers/decision.js +22 -3
- package/dist/src/cli/handlers/effect.js +4 -84
- package/dist/src/cli/handlers/guided-setup.js +470 -0
- package/dist/src/cli/handlers/help.js +2 -2
- package/dist/src/cli/handlers/housekeeper.js +1110 -0
- package/dist/src/cli/handlers/index.js +4 -2
- package/dist/src/cli/handlers/init.js +41 -6
- package/dist/src/cli/handlers/install.js +6 -0
- package/dist/src/cli/handlers/local-executor.js +5 -3
- package/dist/src/cli/handlers/marketplace.js +15 -4
- package/dist/src/cli/handlers/mc.js +509 -53
- package/dist/src/cli/handlers/models.js +32 -2
- package/dist/src/cli/handlers/ralph-launcher.js +76 -4
- package/dist/src/cli/handlers/rules.js +1 -1
- package/dist/src/cli/handlers/script-runner.js +73 -2
- package/dist/src/cli/handlers/serve.js +5 -3
- package/dist/src/cli/handlers/sessions.js +1 -0
- package/dist/src/cli/handlers/setup.js +432 -1
- package/dist/src/cli/handlers/skill-lint.js +1 -1
- package/dist/src/cli/handlers/subcommands.js +118 -8
- package/dist/src/cli/handlers/use.js +335 -107
- package/dist/src/cli/handlers/workspace.js +3 -1
- package/dist/src/cli/prompt-utils.js +81 -0
- package/dist/src/cli/router.js +16 -1
- package/dist/src/config/aiwg-config.js +42 -0
- package/dist/src/config/cli.js +7 -3
- package/dist/src/config/decision-config.js +14 -1
- package/dist/src/config/gitignore.js +4 -0
- package/dist/src/config/native-sandbox-warnings.js +25 -0
- package/dist/src/config/workspace.js +2 -1
- package/dist/src/contributors/validation.js +6 -5
- package/dist/src/decision/adapters/jev.js +20 -31
- package/dist/src/decision/admission.js +7 -3
- package/dist/src/decision/ask.js +6 -1
- package/dist/src/decision/benchmark.js +482 -0
- package/dist/src/decision/ledger.js +22 -3
- package/dist/src/decision/pricing.js +147 -0
- package/dist/src/decision/qualification/gate-evidence.js +23 -18
- package/dist/src/decision/qualification/load-staged.js +576 -0
- package/dist/src/decision/qualification/load.js +109 -33
- package/dist/src/decision/qualification/runner.js +12 -5
- package/dist/src/decision/review/service.js +6 -4
- package/dist/src/decision/review/validate.js +23 -2
- package/dist/src/decision/savings.js +8 -3
- package/dist/src/discovery/index.js +492 -0
- package/dist/src/discovery/interview.js +238 -0
- package/dist/src/discovery/plan-apply.js +567 -0
- package/dist/src/discovery/plan-store.js +171 -0
- package/dist/src/discovery/plan-types.js +2 -0
- package/dist/src/discovery/plan-validation.js +139 -0
- package/dist/src/discovery/types.js +2 -0
- package/dist/src/effects/host.js +91 -0
- package/dist/src/extensions/commands/definitions.js +49 -9
- package/dist/src/extensions/manifest.js +71 -44
- package/dist/src/extensions/project-local-discovery.js +1 -1
- package/dist/src/extensions/project-local-gitignore.js +2 -0
- package/dist/src/extensions/project-quickref.js +18 -17
- package/dist/src/extensions/validation.js +32 -29
- package/dist/src/housekeeper/daemon-config.js +148 -0
- package/dist/src/housekeeper/ipc.js +84 -0
- package/dist/src/housekeeper/lifecycle.js +148 -0
- package/dist/src/housekeeper/platform.js +35 -0
- package/dist/src/housekeeper/status.js +70 -0
- package/dist/src/housekeeper/units.js +114 -0
- package/dist/src/issues/cli.js +16 -5
- package/dist/src/issues/live.js +44 -12
- package/dist/src/jobs/flow.js +22 -21
- package/dist/src/lint/rule-activation.js +20 -5
- package/dist/src/lint/runner.js +1 -1
- package/dist/src/marketplace/exchange.js +18 -6
- package/dist/src/marketplace/provenance.js +3 -2
- package/dist/src/mcp/adapters/codex-runtime.js +46 -76
- package/dist/src/mcp/cli.mjs +22 -96
- package/dist/src/mcp/config-file.mjs +6 -2
- package/dist/src/mcp/config-layers.mjs +23 -7
- package/dist/src/mcp/grok-build-config.mjs +2 -1
- package/dist/src/mcp/muse-native-config.mjs +2 -1
- package/dist/src/mcp/profiles.js +18 -31
- package/dist/src/mcp/profiles.mjs +18 -32
- package/dist/src/mcp/registry.js +7 -27
- package/dist/src/mcp/registry.mjs +7 -28
- package/dist/src/mcp/server.mjs +34 -1
- package/dist/src/mcp/tools/agentic-sandbox.mjs +8 -7
- package/dist/src/mcp/tools/command-run.mjs +3 -2
- package/dist/src/mcp/tools/decision.mjs +49 -48
- package/dist/src/mcp/tools/discovery.mjs +46 -21
- package/dist/src/mcp/tools/orchestration.mjs +22 -22
- package/dist/src/mcp/tools/subsystems.mjs +9 -8
- package/dist/src/mcp/tools/worker-invoke.mjs +30 -6
- package/dist/src/mcp/tools/writer-profiles.mjs +1 -1
- package/dist/src/memory/audit.js +719 -0
- package/dist/src/memory/canonical-context.js +392 -13
- package/dist/src/memory/canonical-maintenance.js +95 -0
- package/dist/src/memory/cli-result.js +22 -0
- package/dist/src/memory/cli.js +176 -0
- package/dist/src/memory/context-pack.js +57 -6
- package/dist/src/memory/cost.js +512 -0
- package/dist/src/memory/firewall-classification.d.mts +7 -0
- package/dist/src/memory/firewall-classification.mjs +32 -0
- package/dist/src/memory/index.js +8 -0
- package/dist/src/memory/line-maintenance.js +68 -0
- package/dist/src/memory/maintenance-cli.js +286 -0
- package/dist/src/memory/maintenance-contract.js +136 -0
- package/dist/src/memory/maintenance-index.js +18 -0
- package/dist/src/memory/maintenance-owner.js +2 -0
- package/dist/src/memory/maintenance-record.js +138 -0
- package/dist/src/memory/maintenance.js +254 -0
- package/dist/src/memory/project-registry.js +2 -1
- package/dist/src/memory/provider-memory-adapter.js +154 -0
- package/dist/src/memory/recommend-cli.js +83 -0
- package/dist/src/memory/recommend.js +269 -0
- package/dist/src/memory/scheduled.js +81 -0
- package/dist/src/memory/taxonomy.js +44 -0
- package/dist/src/mission-protocol/codecs.js +19 -9
- package/dist/src/mission-protocol/worker-status.js +91 -1
- package/dist/src/models/config-loader.js +11 -1
- package/dist/src/models/model-capabilities.v1.json +74 -50
- package/dist/src/models/provider-policy.js +125 -62
- package/dist/src/models/resolver.js +45 -8
- package/dist/src/models/worker-installation.d.mts +8 -1
- package/dist/src/models/worker-installation.mjs +231 -38
- package/dist/src/models/wrapper-route.js +1 -1
- package/dist/src/output-modes/registry.js +8 -7
- package/dist/src/packages/adapters/git.js +99 -23
- package/dist/src/packages/adapters/gitea.js +8 -27
- package/dist/src/packages/adapters/github.js +7 -25
- package/dist/src/packages/registry.js +4 -4
- package/dist/src/plugin/metadata-validator.js +1 -1
- package/dist/src/process/cli-command.d.mts +5 -0
- package/dist/src/process/cli-command.mjs +42 -0
- package/dist/src/providers/deploy-version.d.mts +1 -0
- package/dist/src/providers/deploy-version.mjs +17 -0
- package/dist/src/providers/provider-definitions.js +19 -16
- package/dist/src/providers/skill-ownership.d.mts +11 -2
- package/dist/src/providers/skill-ownership.mjs +35 -17
- package/dist/src/rules/activation.d.mts +11 -2
- package/dist/src/rules/activation.mjs +82 -6
- package/dist/src/rules/inventory.js +1 -1
- package/dist/src/rules/rule-frontmatter.schema.json +2 -0
- package/dist/src/schema/zod-validation.d.mts +6 -0
- package/dist/src/schema/zod-validation.mjs +50 -0
- package/dist/src/serve/executor-registry.js +297 -20
- package/dist/src/serve/executor-token.d.mts +1 -0
- package/dist/src/serve/executor-token.mjs +8 -0
- package/dist/src/serve/shared-host-scheduler.js +1102 -31
- package/dist/src/serve/worker-invocation.js +124 -15
- package/dist/src/sessions/adapters/claude.js +19 -18
- package/dist/src/sessions/adapters/codex.js +10 -9
- package/dist/src/sessions/adapters/copilot.js +14 -13
- package/dist/src/sessions/adapters/cursor.js +19 -18
- package/dist/src/sessions/adapters/deepseek-harness.js +9 -8
- package/dist/src/sessions/adapters/factory.js +11 -10
- package/dist/src/sessions/adapters/generic.js +32 -23
- package/dist/src/sessions/adapters/grokbot.js +35 -35
- package/dist/src/sessions/adapters/hermes.js +20 -19
- package/dist/src/sessions/adapters/muse.js +50 -49
- package/dist/src/sessions/adapters/omp.js +5 -4
- package/dist/src/sessions/adapters/openclaw.js +30 -29
- package/dist/src/sessions/adapters/opencode.js +26 -26
- package/dist/src/sessions/adapters/openhuman.js +24 -23
- package/dist/src/sessions/adapters/pi.js +5 -4
- package/dist/src/sessions/adapters/windsurf.js +8 -8
- package/dist/src/sessions/analytics.js +10 -9
- package/dist/src/sessions/candidates.js +7 -6
- package/dist/src/sessions/contracts.js +63 -53
- package/dist/src/sessions/output-registration.js +11 -10
- package/dist/src/sessions/workspace-discovery.js +3 -4
- package/dist/src/smiths/context-pipeline/aiwg-md.js +18 -1
- package/dist/src/smiths/context-pipeline/claude-hook.js +46 -10
- package/dist/src/smiths/context-pipeline/context-file-safety.js +330 -9
- package/dist/src/smiths/context-pipeline/finalization.js +3 -2
- package/dist/src/smiths/context-pipeline/generator.js +7 -19
- package/dist/src/smiths/context-pipeline/legacy-inject.js +3 -10
- package/dist/src/smiths/context-pipeline/managed-hook.js +5 -5
- package/dist/src/smiths/context-pipeline/parallelism-section.js +72 -5
- package/dist/src/smiths/context-pipeline/workspace-context.js +110 -22
- package/dist/src/tracker/project-inputs.js +2 -0
- package/dist/src/update/checker.d.mts +4 -0
- package/dist/src/update/checker.mjs +14 -0
- package/dist/src/update/notifier.mjs +2 -4
- package/dist/src/writing/exemplar-selection.js +6 -6
- package/dist/src/writing/voice-evaluation.js +24 -23
- package/dist/src/writing/writer-migration.js +14 -13
- package/dist/src/writing/writer-profile.js +19 -18
- package/dist/src/writing/writing-brief.js +18 -17
- package/dist/src/writing/writing-receipt.js +47 -46
- package/package.json +5 -2
- package/schemas/decision/DecisionReview.schema.json +78 -1
- package/schemas/mission-v1.schema.json +3 -0
- package/tools/agents/deploy-agents.mjs +67 -39
- package/tools/agents/providers/antigravity.mjs +6 -1
- package/tools/agents/providers/base.mjs +24 -14
- package/tools/agents/providers/claude.mjs +6 -3
- package/tools/agents/providers/codex.mjs +54 -57
- package/tools/agents/providers/context-write.mjs +28 -0
- package/tools/agents/providers/copilot.mjs +13 -4
- package/tools/agents/providers/cursor.mjs +1 -1
- package/tools/agents/providers/deepseek-harness.mjs +1 -1
- package/tools/agents/providers/factory.mjs +7 -1
- package/tools/agents/providers/grok-build.mjs +18 -2
- package/tools/agents/providers/grokbot.mjs +1 -1
- package/tools/agents/providers/hermes.mjs +12 -15
- package/tools/agents/providers/muse-hooks.mjs +21 -14
- package/tools/agents/providers/muse.mjs +7 -2
- package/tools/agents/providers/omp.mjs +31 -5
- package/tools/agents/providers/opencode.mjs +14 -5
- package/tools/agents/providers/openhuman.mjs +1 -1
- package/tools/agents/providers/pi.mjs +1 -1
- package/tools/agents/providers/provider-prepare-coordinator.mjs +29 -9
- package/tools/agents/providers/rule-delivery.mjs +289 -80
- package/tools/agents/providers/warp.mjs +4 -1
- package/tools/agents/providers/windsurf.mjs +13 -3
- package/tools/cli/workspace-status.mjs +5 -0
- package/tools/commands/deploy-prompts-codex.mjs +11 -8
- package/tools/ralph-external/lib/codex-adapter.mjs +6 -2
- package/tools/ralph-external/lib/consecutive-failure-circuit-breaker.mjs +26 -0
- package/tools/ralph-external/lib/launcher-recovery-evidence.mjs +7 -1
- package/tools/ralph-external/lib/muse-adapter.mjs +12 -2
- package/tools/ralph-external/lib/recovery-probe.mjs +14 -4
- package/tools/ralph-external/lib/worker-health.mjs +1 -1
- package/tools/ralph-external/lib/worker-isolation.mjs +65 -9
- package/tools/ralph-external/process-monitor.mjs +49 -8
- package/tools/ralph-external/session-launcher.mjs +405 -35
- package/tools/skills/deploy-skills-codex.mjs +11 -7
- package/vscode-extension/schemas/aiwg.config.v1.json +11 -1
|
@@ -329,6 +329,7 @@ export function printIndexUsage() {
|
|
|
329
329
|
console.log(' build [--force] [--verbose] [--all] [--scope <dir>] [--graph <name>]');
|
|
330
330
|
console.log(' refresh [--full] [--workspace <path>]... [--root <dir>]...');
|
|
331
331
|
console.log(' [--only graphs|sessions|caches|runtime|models|issues] [--dry-run] [--json] [--lock-wait-ms <n>]');
|
|
332
|
+
console.log(' --only also accepts a registered index name (for example project) or all.');
|
|
332
333
|
console.log(' [--max-record-bytes <n>] [--max-source-bytes <n>]');
|
|
333
334
|
console.log(' Session import defaults: 67108864 bytes per record, 1073741824 bytes (1 GiB) per source; source 0 is unlimited.');
|
|
334
335
|
console.log(' --exclude <id-or-glob> (repeatable): skip session IDs or absolute path globs; adds to sessions.import.exclude and AIWG_SESSIONS_IMPORT_EXCLUDE (comma-separated).');
|
|
@@ -1085,6 +1086,21 @@ async function handleExport(args) {
|
|
|
1085
1086
|
process.exit(1);
|
|
1086
1087
|
}
|
|
1087
1088
|
}
|
|
1089
|
+
function warnSyncTextQuality(manifest) {
|
|
1090
|
+
const quality = manifest.text_quality;
|
|
1091
|
+
if (!quality?.degenerate)
|
|
1092
|
+
return;
|
|
1093
|
+
const config = GRAPH_CONFIGS[manifest.graph];
|
|
1094
|
+
const source = config
|
|
1095
|
+
? ` Source: ${config.scanDirs.join(', ')} (nodeStrategy: ${config.nodeStrategy ?? 'default'}).`
|
|
1096
|
+
: '';
|
|
1097
|
+
if (manifest.item_count === 0) {
|
|
1098
|
+
console.warn(`Warning: graph '${manifest.graph}' contains no indexed items; this graph cannot return results.${source}`);
|
|
1099
|
+
return;
|
|
1100
|
+
}
|
|
1101
|
+
const percent = Math.round(quality.short_text_count / manifest.item_count * 100);
|
|
1102
|
+
console.warn(`Warning: graph '${manifest.graph}': ${quality.short_text_count}/${manifest.item_count} items (${percent}%) have <${quality.short_text_threshold_chars} chars of indexed text; ${quality.filename_title_count} have a filename as title. This graph may return poor results. Check source content and extracted text sidecars.${source}`);
|
|
1103
|
+
}
|
|
1088
1104
|
/**
|
|
1089
1105
|
* Handle 'index sync' command
|
|
1090
1106
|
*/
|
|
@@ -1154,6 +1170,7 @@ async function handleSync(args) {
|
|
|
1154
1170
|
console.log(`Fortemi Core sync: ${manifests.length} graph(s) succeeded, ${failures.length} failed`);
|
|
1155
1171
|
for (const manifest of manifests) {
|
|
1156
1172
|
console.log(` ${manifest.graph}: ${manifest.status}, ${manifest.item_count} item(s) → ${manifest.export_path}`);
|
|
1173
|
+
warnSyncTextQuality(manifest);
|
|
1157
1174
|
}
|
|
1158
1175
|
for (const failure of failures) {
|
|
1159
1176
|
console.error(` ${failure.graph}: failed — ${failure.error}`);
|
|
@@ -1169,6 +1186,7 @@ async function handleSync(args) {
|
|
|
1169
1186
|
return;
|
|
1170
1187
|
}
|
|
1171
1188
|
console.log(`Fortemi Core ${manifest.status}: ${manifest.item_count} item(s) → ${manifest.export_path}`);
|
|
1189
|
+
warnSyncTextQuality(manifest);
|
|
1172
1190
|
}
|
|
1173
1191
|
catch (err) {
|
|
1174
1192
|
console.error('Error: ' + (err instanceof Error ? err.message : String(err)));
|
|
@@ -1300,7 +1318,7 @@ async function handleStats(args) {
|
|
|
1300
1318
|
*/
|
|
1301
1319
|
async function handleStatus(args) {
|
|
1302
1320
|
if (args.includes('--help') || args.includes('-h')) {
|
|
1303
|
-
console.log('Usage: aiwg index status [--json]');
|
|
1321
|
+
console.log('Usage: aiwg index status [--only <name|all>] [--json]');
|
|
1304
1322
|
console.log(' aiwg index list [--json] (alias)');
|
|
1305
1323
|
console.log('');
|
|
1306
1324
|
console.log('Enumerate every registered index graph (built-in + module + operator)');
|
|
@@ -1314,7 +1332,10 @@ async function handleStatus(args) {
|
|
|
1314
1332
|
return;
|
|
1315
1333
|
}
|
|
1316
1334
|
const { showIndexStatus } = await import('./index-status.js');
|
|
1317
|
-
|
|
1335
|
+
const onlyAt = args.indexOf('--only');
|
|
1336
|
+
if (onlyAt >= 0 && (!args[onlyAt + 1] || args[onlyAt + 1].startsWith('--')))
|
|
1337
|
+
throw new Error('--only requires an index name');
|
|
1338
|
+
await showIndexStatus(process.cwd(), { json: args.includes('--json'), only: onlyAt >= 0 ? args[onlyAt + 1] : undefined });
|
|
1318
1339
|
}
|
|
1319
1340
|
/**
|
|
1320
1341
|
* Handle 'index neighbors' command
|
|
@@ -1522,7 +1543,7 @@ async function handleDiscover(args) {
|
|
|
1522
1543
|
});
|
|
1523
1544
|
}
|
|
1524
1545
|
/**
|
|
1525
|
-
* Handle 'index show' command —
|
|
1546
|
+
* Handle 'index show' command — show the metadata card of a specific
|
|
1526
1547
|
* artifact by type and name.
|
|
1527
1548
|
*
|
|
1528
1549
|
* Shape (#1218):
|
|
@@ -1531,9 +1552,31 @@ async function handleDiscover(args) {
|
|
|
1531
1552
|
* Type is positional (not a flag) so the verb reads as
|
|
1532
1553
|
* "show <kind> <name>". `<type>` is one of the operational show types.
|
|
1533
1554
|
*
|
|
1534
|
-
* Companion to `discover`: where discover ranks candidates, show
|
|
1535
|
-
*
|
|
1555
|
+
* Companion to `discover`: where discover ranks candidates, show returns
|
|
1556
|
+
* a metadata card with section/body drill-ins so consumers don't need to navigate the filesystem.
|
|
1536
1557
|
*/
|
|
1558
|
+
const SHOW_FLAGS = new Set(['--json', '--first', '--bound-rule-bodies', '--graph', '--backend', '--resource-source',
|
|
1559
|
+
'--aiwg-version', '--offline', '--body', '--section', '--rules', '--with-rule-bodies', '--resources', '--resource',
|
|
1560
|
+
'--help']);
|
|
1561
|
+
// Section headings can themselves start with `--` (e.g. "--max-iterations (default: 10)"), and the card
|
|
1562
|
+
// tells agents to pass them verbatim. Only a missing value or another show flag counts as "no value".
|
|
1563
|
+
function showFlagValue(flags, index) {
|
|
1564
|
+
const value = flags[index + 1];
|
|
1565
|
+
if (!value || SHOW_FLAGS.has(value.split('=')[0]))
|
|
1566
|
+
throw new Error(`${flags[index]} requires a value`);
|
|
1567
|
+
return value;
|
|
1568
|
+
}
|
|
1569
|
+
/** Values for a repeatable value flag, accepting both `--flag value` and `--flag=value`. */
|
|
1570
|
+
function showFlagValues(flags, name) {
|
|
1571
|
+
const values = [];
|
|
1572
|
+
for (let i = 0; i < flags.length; i++) {
|
|
1573
|
+
if (flags[i] === name)
|
|
1574
|
+
values.push(showFlagValue(flags, i));
|
|
1575
|
+
else if (flags[i].startsWith(`${name}=`))
|
|
1576
|
+
values.push(flags[i].slice(name.length + 1));
|
|
1577
|
+
}
|
|
1578
|
+
return values;
|
|
1579
|
+
}
|
|
1537
1580
|
async function handleShow(args) {
|
|
1538
1581
|
const { showArtifact, showMetadata } = await import('./query-engine.js');
|
|
1539
1582
|
const cwd = process.cwd();
|
|
@@ -1567,9 +1610,11 @@ async function handleShow(args) {
|
|
|
1567
1610
|
' aiwg show command discover',
|
|
1568
1611
|
' aiwg show skill intake-wizard --resource-source web --aiwg-version stable',
|
|
1569
1612
|
'',
|
|
1613
|
+
'Default: metadata card. --body restores full output; --section <heading> is repeatable.',
|
|
1614
|
+
'--rules [--with-rule-bodies] | --resources | --resource <path>',
|
|
1570
1615
|
'Bound rules: summaries and show pointers are appended for bound skills, agents, and flows.',
|
|
1571
1616
|
'Fetch and follow every required_rule_checks entry before starting governed work; summaries do not replace full rules.',
|
|
1572
|
-
'Use --
|
|
1617
|
+
'Use --rules --with-rule-bodies to include their full text (legacy alias: --bound-rule-bodies).',
|
|
1573
1618
|
'',
|
|
1574
1619
|
'Tip: use `aiwg discover "<phrase>" --json` first to find the stable id.',
|
|
1575
1620
|
].join('\n');
|
|
@@ -1635,6 +1680,12 @@ async function handleShow(args) {
|
|
|
1635
1680
|
const params = {
|
|
1636
1681
|
name,
|
|
1637
1682
|
boundRuleBodies: flags.includes('--bound-rule-bodies'),
|
|
1683
|
+
body: flags.includes('--body'),
|
|
1684
|
+
sections: showFlagValues(flags, '--section'),
|
|
1685
|
+
rules: flags.includes('--rules'),
|
|
1686
|
+
withRuleBodies: flags.includes('--with-rule-bodies'),
|
|
1687
|
+
resources: flags.includes('--resources'),
|
|
1688
|
+
resource: showFlagValues(flags, '--resource')[0],
|
|
1638
1689
|
typeFilter: type ? [type] : undefined,
|
|
1639
1690
|
json,
|
|
1640
1691
|
first,
|
|
@@ -244,6 +244,8 @@ function entryFromRecord(record) {
|
|
|
244
244
|
const indexedScript = indexedFrontmatter.aiwg_script;
|
|
245
245
|
return {
|
|
246
246
|
path: record.source.path,
|
|
247
|
+
...(indexedFrontmatter.aiwg_memory_record && typeof indexedFrontmatter.aiwg_memory_record === 'object'
|
|
248
|
+
? { memoryRecord: indexedFrontmatter.aiwg_memory_record } : {}),
|
|
247
249
|
type: artifactTypeFromRecord(record),
|
|
248
250
|
kind: typeof indexedFrontmatter.aiwg_kind === "string"
|
|
249
251
|
? indexedFrontmatter.aiwg_kind
|
|
@@ -5,9 +5,9 @@ import { fileURLToPath } from "node:url";
|
|
|
5
5
|
import { parse as parseYaml } from "yaml";
|
|
6
6
|
import { GRAPH_CONFIGS, getProjectIndexRoot, loadGlobalGraphConfigs } from "./types.js";
|
|
7
7
|
import { buildAiwgFortemiIndexExport, } from "./browser-export.js";
|
|
8
|
-
import { loadGraphIndexFile } from "./index-reader.js";
|
|
8
|
+
import { loadGraphIndexFile, publishIndexFiles } from "./index-reader.js";
|
|
9
9
|
import { getFrameworkIndexBaseDir } from './framework-index-paths.js';
|
|
10
|
-
function
|
|
10
|
+
export function getFortemiCoreIndexDir(cwd, graph) {
|
|
11
11
|
loadGlobalGraphConfigs();
|
|
12
12
|
if (graph === 'framework')
|
|
13
13
|
return path.join(getFrameworkIndexBaseDir(cwd), 'fortemi-core', graph);
|
|
@@ -180,14 +180,15 @@ function writeExport(file, exported, maxChars) {
|
|
|
180
180
|
}
|
|
181
181
|
export function syncFortemiCoreIndex(cwd, options = {}) {
|
|
182
182
|
const graph = options.graph ?? "project";
|
|
183
|
-
const dir =
|
|
183
|
+
const dir = getFortemiCoreIndexDir(cwd, graph);
|
|
184
184
|
const exportPath = path.join(dir, "aiwg-fortemi-index-v2.json");
|
|
185
185
|
const manifestPath = path.join(dir, "manifest.json");
|
|
186
186
|
const maxChars = options.maxChunkChars ?? 64 * 1024;
|
|
187
187
|
if (!Number.isSafeInteger(maxChars) || maxChars < 64)
|
|
188
188
|
throw new Error("maxChunkChars must be an integer of at least 64");
|
|
189
189
|
fs.mkdirSync(dir, { recursive: true });
|
|
190
|
-
const
|
|
190
|
+
const staging = fs.mkdtempSync(path.join(dir, ".sync-"));
|
|
191
|
+
const temporaryPath = path.join(staging, `.export-${randomUUID()}.tmp`);
|
|
191
192
|
const previous = readManifest(manifestPath);
|
|
192
193
|
const sourceBuiltAt = sourceIndexBuiltAt(cwd, graph);
|
|
193
194
|
const buildExport = (generatedAt) => {
|
|
@@ -200,10 +201,25 @@ export function syncFortemiCoreIndex(cwd, options = {}) {
|
|
|
200
201
|
});
|
|
201
202
|
const checksum = writeExport(temporaryPath, exported, maxChars);
|
|
202
203
|
const recordsWithConcepts = exported.items.filter((item) => (item.skos_concepts?.length ?? 0) > 0).length;
|
|
204
|
+
const shortTextThreshold = 200;
|
|
205
|
+
let shortTextCount = 0;
|
|
206
|
+
let filenameTitleCount = 0;
|
|
207
|
+
for (const item of exported.items) {
|
|
208
|
+
if (item.text.trim().length < shortTextThreshold)
|
|
209
|
+
shortTextCount++;
|
|
210
|
+
if (item.title.trim() === path.posix.basename(item.source.path))
|
|
211
|
+
filenameTitleCount++;
|
|
212
|
+
}
|
|
203
213
|
return {
|
|
204
214
|
generatedAt,
|
|
205
215
|
checksum,
|
|
206
216
|
itemCount: exported.items.length,
|
|
217
|
+
textQuality: {
|
|
218
|
+
short_text_threshold_chars: shortTextThreshold,
|
|
219
|
+
short_text_count: shortTextCount,
|
|
220
|
+
filename_title_count: filenameTitleCount,
|
|
221
|
+
degenerate: exported.items.length === 0 || shortTextCount / exported.items.length >= 0.8,
|
|
222
|
+
},
|
|
207
223
|
skosCoverage: {
|
|
208
224
|
records_with_concepts: recordsWithConcepts,
|
|
209
225
|
total_records: exported.items.length,
|
|
@@ -228,7 +244,7 @@ export function syncFortemiCoreIndex(cwd, options = {}) {
|
|
|
228
244
|
}
|
|
229
245
|
}
|
|
230
246
|
}
|
|
231
|
-
fs.renameSync(temporaryPath, exportPath);
|
|
247
|
+
fs.renameSync(temporaryPath, path.join(staging, path.basename(exportPath)));
|
|
232
248
|
const manifest = {
|
|
233
249
|
schema_version: "aiwg.fortemi.core-sync.v1",
|
|
234
250
|
backend: "fortemi-core",
|
|
@@ -238,19 +254,21 @@ export function syncFortemiCoreIndex(cwd, options = {}) {
|
|
|
238
254
|
export_schema_version: "aiwg.fortemi.index.export.v2",
|
|
239
255
|
export_checksum: built.checksum,
|
|
240
256
|
item_count: built.itemCount,
|
|
257
|
+
text_quality: built.textQuality,
|
|
241
258
|
skos_coverage: built.skosCoverage,
|
|
242
259
|
status,
|
|
243
260
|
source_index_built_at: sourceBuiltAt,
|
|
244
261
|
};
|
|
245
|
-
fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2) + "\n", "utf-8");
|
|
262
|
+
fs.writeFileSync(path.join(staging, path.basename(manifestPath)), JSON.stringify(manifest, null, 2) + "\n", "utf-8");
|
|
263
|
+
publishIndexFiles(staging, dir);
|
|
246
264
|
return manifest;
|
|
247
265
|
}
|
|
248
266
|
finally {
|
|
249
|
-
fs.rmSync(
|
|
267
|
+
fs.rmSync(staging, { recursive: true, force: true });
|
|
250
268
|
}
|
|
251
269
|
}
|
|
252
270
|
export function getFortemiCoreSyncStatus(cwd, graph = "project") {
|
|
253
|
-
const dir =
|
|
271
|
+
const dir = getFortemiCoreIndexDir(cwd, graph);
|
|
254
272
|
const manifestPath = path.join(dir, "manifest.json");
|
|
255
273
|
const exportPath = path.join(dir, "aiwg-fortemi-index-v2.json");
|
|
256
274
|
const { manifest, reason: manifestReadReason } = readManifestResult(manifestPath);
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"contractRevision": "23",
|
|
4
|
+
"status": "unreleased-candidate",
|
|
5
|
+
"authority": {
|
|
6
|
+
"repository": "Fortemi/fortemi",
|
|
7
|
+
"issue": "https://git.integrolabs.net/Fortemi/fortemi/issues/1217",
|
|
8
|
+
"adr": "docs/architecture/adr/ADR-102-canonical-knowledge-shard-contract.md"
|
|
9
|
+
},
|
|
10
|
+
"knowledgeShard": {
|
|
11
|
+
"format": "matric-shard",
|
|
12
|
+
"schemaVersion": "2.2.0",
|
|
13
|
+
"minimumReaderVersion": "2.2.0",
|
|
14
|
+
"profile": "full-v1"
|
|
15
|
+
},
|
|
16
|
+
"schemaBundle": {
|
|
17
|
+
"baseAuthority": "contracts/knowledge-shard/2.1.0/contract.json",
|
|
18
|
+
"files": {
|
|
19
|
+
"contracts/knowledge-shard/2.1.0/core-v1/collection.schema.json": "7507e3d8889c298f058246adecfa3fe8cf529f9c54f51a6beeec5a2229e8afff",
|
|
20
|
+
"contracts/knowledge-shard/2.1.0/core-v1/link.schema.json": "e654ca15596d4c3bddd99061f1011ae84085725db7b5b877023491d4c70a55fd",
|
|
21
|
+
"contracts/knowledge-shard/2.1.0/core-v1/note.schema.json": "f43082707710b1222afba6bd4f39ca694868257cdc0f6c3741fea48a48f322b8",
|
|
22
|
+
"contracts/knowledge-shard/2.1.0/core-v1/tag.schema.json": "dba94d9b65ef485667a618594d4e543da3db743b1608073daf340af39c83586f",
|
|
23
|
+
"contracts/knowledge-shard/2.1.0/core-v1/template.schema.json": "45d452c0d0ec82d8d8640d01b4db6ceeb92e8409597986f2d1c2361eccd8a3b6",
|
|
24
|
+
"contracts/knowledge-shard/2.1.0/full-v1/community-assignment.schema.json": "43caae37ff83af794e3b33c5c5a890c29891391c9013894b6a27a368d1d1a1e1",
|
|
25
|
+
"contracts/knowledge-shard/2.1.0/full-v1/community-set.schema.json": "44b5ba4dfafffafca4cd2dcbeb613e84b5eac40b8141ee42b64acdd442fc505c",
|
|
26
|
+
"contracts/knowledge-shard/2.1.0/full-v1/embedding-set-member.schema.json": "c3ec095a34bc679caf5953e103f8ff340def3e7f7d24354f84c0b23a50e685b9",
|
|
27
|
+
"contracts/knowledge-shard/2.1.0/full-v1/embedding.schema.json": "d0062129a58cc963688d8a477d93bb18c2515ebbb7459751540fae3be938866c",
|
|
28
|
+
"contracts/knowledge-shard/2.1.0/full-v1/graph-edge.schema.json": "ec03fd6f149f93ad59f1da43fda9584307c7e3a1d1fa9a66bb532b9d5cb09619",
|
|
29
|
+
"contracts/knowledge-shard/2.1.0/full-v1/graph-source.schema.json": "4df54f110cefad9204af4d5a334b42a865488a256acb3100e71319582c9692dc",
|
|
30
|
+
"contracts/knowledge-shard/2.1.0/full-v1/named-location.schema.json": "4fdacb534ae5d061e930fd3a6e5a248eff9724e106c86013400600ef42dbc860",
|
|
31
|
+
"contracts/knowledge-shard/2.1.0/full-v1/note-original-history.schema.json": "41246036eff831ec9dd3b84868ad089983bb375289eff0886f69ae80fe27760d",
|
|
32
|
+
"contracts/knowledge-shard/2.1.0/full-v1/note-original.schema.json": "85ed82382d951107d508e0628822b5342aa9ec19c1e9231c1f22dcecdd7316fe",
|
|
33
|
+
"contracts/knowledge-shard/2.1.0/full-v1/note-revised-current.schema.json": "506cff36ced7b63b06f4c37341aac2784b8dd20df6c1a0f969584288a11c4e2a",
|
|
34
|
+
"contracts/knowledge-shard/2.1.0/full-v1/note-revision.schema.json": "29366d0d5c5dc738fbb8ae3ad129086b51da1471b00c6fa27827b1d3d70b769f",
|
|
35
|
+
"contracts/knowledge-shard/2.1.0/full-v1/note-skos-tag.schema.json": "9be98ac497399dcc8696db6ba5582e58b3a5c4f57191e5dcf45d666c2954cf42",
|
|
36
|
+
"contracts/knowledge-shard/2.1.0/full-v1/provenance-activity.schema.json": "a91766df21408b770913ffc2f01b0d94c22d22e6282169392758d9a0cc491999",
|
|
37
|
+
"contracts/knowledge-shard/2.1.0/full-v1/provenance-device.schema.json": "b3fbb075bf1b3102d684254ebc9bd7cdb65358bf3fa91c831f8bd307701bb1ee",
|
|
38
|
+
"contracts/knowledge-shard/2.1.0/full-v1/provenance-edge.schema.json": "bb60c4762c410c82879a47f79f75b34f885e8599d3e2f842ea72381c4bf7aba3",
|
|
39
|
+
"contracts/knowledge-shard/2.1.0/full-v1/provenance-location.schema.json": "d497ea4cf761e04966dbd086c6559b975f6f04a36b537e2c994da0b5db7e1bcc",
|
|
40
|
+
"contracts/knowledge-shard/2.1.0/full-v1/provenance-record.schema.json": "4b780451a3beae7557a0af7ae29e07ea7652dc7825acd072adf3c8bd58420c17",
|
|
41
|
+
"contracts/knowledge-shard/2.1.0/full-v1/signature.schema.json": "f3ff9a478f425855716f18f0921aeebcd9992884d6040df72dc397c0e3531f99",
|
|
42
|
+
"contracts/knowledge-shard/2.1.0/full-v1/skos-collection-member.schema.json": "cfcbed164958e27834075be91e7907e386e29089b65f1a79383cc4472890d2e7",
|
|
43
|
+
"contracts/knowledge-shard/2.1.0/full-v1/skos-collection.schema.json": "0820fd02247fb82ee31aee2a77481906b9e82af90f04bb12038ab519c2b39fa5",
|
|
44
|
+
"contracts/knowledge-shard/2.1.0/full-v1/skos-concept.schema.json": "7a352094ece588501dc06960abf781a642e5df82c6a47ff6002b0b2023621b1c",
|
|
45
|
+
"contracts/knowledge-shard/2.1.0/full-v1/skos-label.schema.json": "256d1f370268cdc53cbc3d0fc2dc7fa4872cfbe28c22d8162f0b07bec67565d6",
|
|
46
|
+
"contracts/knowledge-shard/2.1.0/full-v1/skos-mapping-relation.schema.json": "149c978086247bfc6da3b5a655fc6e20958fcd4f11f533eb634f1fb58eb7feac",
|
|
47
|
+
"contracts/knowledge-shard/2.1.0/full-v1/skos-note.schema.json": "87d13a0391ec78b7354af34448083096e8c767fe481d34f05ecab831aa957469",
|
|
48
|
+
"contracts/knowledge-shard/2.1.0/full-v1/skos-relation.schema.json": "5b9fc1004137e5d3d7f1a8b2d74470863b0d708dd28b148456ebf52a16ff2432",
|
|
49
|
+
"contracts/knowledge-shard/2.1.0/full-v1/skos-scheme-membership.schema.json": "7547f5fd19c1012a4045d3415af03d9ddeb9a0997ea229af490169c97730f60e",
|
|
50
|
+
"contracts/knowledge-shard/2.1.0/full-v1/skos-scheme.schema.json": "a0ce0892d56f9a6871282210192f05c97db3a92675c4b9f7c6f8d784f3100d25",
|
|
51
|
+
"contracts/knowledge-shard/2.2.0/full-v1/embedding-config.schema.json": "03476bf53465d3bfba270b3c3f1ede8254b15f4e1b60ec6b361e1edc86c44192",
|
|
52
|
+
"contracts/knowledge-shard/2.2.0/full-v1/embedding-set.schema.json": "303a938ba044960cd9b09cc5438737576afc85ed0e51994b5cabf0fa21d66655",
|
|
53
|
+
"contracts/knowledge-shard/2.2.0/full-v1/manifest.schema.json": "20b4a98c18c53ec3a6c385d886750e77e4d32100f6bb25578f8db296b5edb109"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"fieldSemantics": {
|
|
57
|
+
"embedding_sets.query_template": {
|
|
58
|
+
"optional": true,
|
|
59
|
+
"nullable": true,
|
|
60
|
+
"absentDefault": null,
|
|
61
|
+
"nullMeaning": "No set query wrapper; use existing provider query behavior.",
|
|
62
|
+
"valueMeaning": "Exactly one {text}, at most 2048 UTF-8 bytes; restore without modification.",
|
|
63
|
+
"exportNull": "Omit; absence and null both denote the legacy no-template default."
|
|
64
|
+
},
|
|
65
|
+
"embedding_sets.vector_source": {
|
|
66
|
+
"optional": true,
|
|
67
|
+
"nullable": true,
|
|
68
|
+
"absentDefault": "internal",
|
|
69
|
+
"nullMeaning": "Internal automatic embedding ownership",
|
|
70
|
+
"valueMeaning": "Preserve internal/external write ownership independently of searchable vector kinds."
|
|
71
|
+
},
|
|
72
|
+
"embedding_configs.provider_dimension": {
|
|
73
|
+
"optional": true,
|
|
74
|
+
"nullable": true,
|
|
75
|
+
"absentDefault": null,
|
|
76
|
+
"nullMeaning": "Legacy provider-native postprocessing.",
|
|
77
|
+
"valueMeaning": "Raw provider output before truncation and L2 normalization; storage dimension <= raw <= 16384."
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"compatibility": {
|
|
81
|
+
"previousReaders": "Continue accepting 1.x, 2.0.0 and 2.1.0; absent query_template/provider_dimension default to NULL and vector_source to internal.",
|
|
82
|
+
"upgrade": "2.1.0 records remain valid 2.2.0 records; no rewriting or migration is required.",
|
|
83
|
+
"downgrade": "Reject older full-v1 exports if query_template, external ownership, or provider_dimension would be discarded.",
|
|
84
|
+
"selection": "Full-v1 exports select 2.2.0 when any of these extended contracts is present."
|
|
85
|
+
},
|
|
86
|
+
"canonicalCorpus": {
|
|
87
|
+
"path": "tests/fixtures/shards/full-v1-query-template-v2.2/embedding_sets.json",
|
|
88
|
+
"sha256": "f279cad22517395194c6a5dc327b4531bd089e151b9141324c94f01e81bacf32",
|
|
89
|
+
"test": "shard_query_template_tests::query_template_schema_2_2_golden_corpus_and_pins"
|
|
90
|
+
},
|
|
91
|
+
"consumerImpact": {
|
|
92
|
+
"fortemi": "Producer/consumer route round trip, legacy NULL default, validation-before-writes tests in shard_query_template_tests.rs.",
|
|
93
|
+
"fortemi-react": "Consumers pinned to earlier schema versions must reject 2.2.0 until their optional query_template mapping is implemented and fixtures pass. Preserve vector_source and provider_dimension under the same qualification gate.",
|
|
94
|
+
"aiwg": "Full-v1 consumers must preserve optional query_template and pass the new fixture before advertising 2.2.0. Preserve vector_source and provider_dimension under the same qualification gate.",
|
|
95
|
+
"HotM": "Consumers supporting full-v1 must negotiate 2.2.0 and preserve query_template before advertising support. Preserve vector_source and provider_dimension under the same qualification gate.",
|
|
96
|
+
"tracking": "Consumer issue/PR reciprocal links and cross-repository pins/results are required before release under Fortemi/fortemi#1217."
|
|
97
|
+
},
|
|
98
|
+
"claimPolicy": "Local implementation and corpus only. No new cross-repository conformance or release claim; existing receipts remain immutable and do not cover 2.2.0.",
|
|
99
|
+
"providerDimensionCorpus": {
|
|
100
|
+
"path": "tests/fixtures/shards/full-v1-query-template-v2.2/embedding_configs.json",
|
|
101
|
+
"sha256": "bc76206df48215d0da7a3c944874d7af5b6e01bb07df8b5849869025b7d25f89"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.fortemi.dev/knowledge-shard/2.2.0/full-v1/embedding-config.schema.json",
|
|
4
|
+
"title": "Fortemi Knowledge Shard full-v1 candidate embedding config record",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"id",
|
|
9
|
+
"name",
|
|
10
|
+
"description",
|
|
11
|
+
"model",
|
|
12
|
+
"dimension",
|
|
13
|
+
"vector_type",
|
|
14
|
+
"chunk_size",
|
|
15
|
+
"chunk_overlap",
|
|
16
|
+
"hnsw_m",
|
|
17
|
+
"hnsw_ef_construction",
|
|
18
|
+
"ivfflat_lists",
|
|
19
|
+
"is_default",
|
|
20
|
+
"supports_mrl",
|
|
21
|
+
"matryoshka_dims",
|
|
22
|
+
"default_truncate_dim",
|
|
23
|
+
"provider",
|
|
24
|
+
"provider_config",
|
|
25
|
+
"content_types",
|
|
26
|
+
"strengths",
|
|
27
|
+
"limitations",
|
|
28
|
+
"recommended_for",
|
|
29
|
+
"benchmark_scores",
|
|
30
|
+
"is_available",
|
|
31
|
+
"document_composition",
|
|
32
|
+
"created_at",
|
|
33
|
+
"updated_at"
|
|
34
|
+
],
|
|
35
|
+
"properties": {
|
|
36
|
+
"id": {
|
|
37
|
+
"$ref": "#/$defs/uuid"
|
|
38
|
+
},
|
|
39
|
+
"name": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"minLength": 1
|
|
42
|
+
},
|
|
43
|
+
"description": {
|
|
44
|
+
"type": [
|
|
45
|
+
"string",
|
|
46
|
+
"null"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
"model": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"minLength": 1
|
|
52
|
+
},
|
|
53
|
+
"dimension": {
|
|
54
|
+
"type": "integer",
|
|
55
|
+
"minimum": 1,
|
|
56
|
+
"maximum": 4000
|
|
57
|
+
},
|
|
58
|
+
"vector_type": {
|
|
59
|
+
"enum": [
|
|
60
|
+
"vector",
|
|
61
|
+
"halfvec"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"chunk_size": {
|
|
65
|
+
"type": "integer",
|
|
66
|
+
"minimum": 1
|
|
67
|
+
},
|
|
68
|
+
"chunk_overlap": {
|
|
69
|
+
"type": "integer",
|
|
70
|
+
"minimum": 0
|
|
71
|
+
},
|
|
72
|
+
"hnsw_m": {
|
|
73
|
+
"$ref": "#/$defs/nullableNonNegativeInteger"
|
|
74
|
+
},
|
|
75
|
+
"hnsw_ef_construction": {
|
|
76
|
+
"$ref": "#/$defs/nullableNonNegativeInteger"
|
|
77
|
+
},
|
|
78
|
+
"ivfflat_lists": {
|
|
79
|
+
"$ref": "#/$defs/nullableNonNegativeInteger"
|
|
80
|
+
},
|
|
81
|
+
"is_default": {
|
|
82
|
+
"$ref": "#/$defs/nullableBoolean"
|
|
83
|
+
},
|
|
84
|
+
"supports_mrl": {
|
|
85
|
+
"$ref": "#/$defs/nullableBoolean"
|
|
86
|
+
},
|
|
87
|
+
"matryoshka_dims": {
|
|
88
|
+
"oneOf": [
|
|
89
|
+
{
|
|
90
|
+
"type": "array",
|
|
91
|
+
"minItems": 1,
|
|
92
|
+
"uniqueItems": true,
|
|
93
|
+
"items": {
|
|
94
|
+
"type": "integer",
|
|
95
|
+
"minimum": 1
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"type": "null"
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"default_truncate_dim": {
|
|
104
|
+
"$ref": "#/$defs/nullablePositiveInteger"
|
|
105
|
+
},
|
|
106
|
+
"provider": {
|
|
107
|
+
"enum": [
|
|
108
|
+
null,
|
|
109
|
+
"ollama",
|
|
110
|
+
"openai",
|
|
111
|
+
"voyage",
|
|
112
|
+
"cohere",
|
|
113
|
+
"custom"
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
"provider_config": {
|
|
117
|
+
"type": [
|
|
118
|
+
"object",
|
|
119
|
+
"null"
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
"content_types": {
|
|
123
|
+
"$ref": "#/$defs/nullableStringArray"
|
|
124
|
+
},
|
|
125
|
+
"strengths": {
|
|
126
|
+
"$ref": "#/$defs/nullableStringArray"
|
|
127
|
+
},
|
|
128
|
+
"limitations": {
|
|
129
|
+
"$ref": "#/$defs/nullableStringArray"
|
|
130
|
+
},
|
|
131
|
+
"recommended_for": {
|
|
132
|
+
"$ref": "#/$defs/nullableStringArray"
|
|
133
|
+
},
|
|
134
|
+
"benchmark_scores": {
|
|
135
|
+
"type": [
|
|
136
|
+
"object",
|
|
137
|
+
"null"
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
"is_available": {
|
|
141
|
+
"$ref": "#/$defs/nullableBoolean"
|
|
142
|
+
},
|
|
143
|
+
"document_composition": {
|
|
144
|
+
"type": "object"
|
|
145
|
+
},
|
|
146
|
+
"space_contract": true,
|
|
147
|
+
"space_id": {
|
|
148
|
+
"type": [
|
|
149
|
+
"string",
|
|
150
|
+
"null"
|
|
151
|
+
],
|
|
152
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
153
|
+
},
|
|
154
|
+
"created_at": {
|
|
155
|
+
"$ref": "#/$defs/dateTime"
|
|
156
|
+
},
|
|
157
|
+
"updated_at": {
|
|
158
|
+
"$ref": "#/$defs/dateTime"
|
|
159
|
+
},
|
|
160
|
+
"provider_dimension": {
|
|
161
|
+
"type": [
|
|
162
|
+
"integer",
|
|
163
|
+
"null"
|
|
164
|
+
],
|
|
165
|
+
"minimum": 1,
|
|
166
|
+
"maximum": 16384
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
"$defs": {
|
|
170
|
+
"uuid": {
|
|
171
|
+
"type": "string",
|
|
172
|
+
"format": "uuid"
|
|
173
|
+
},
|
|
174
|
+
"dateTime": {
|
|
175
|
+
"type": "string",
|
|
176
|
+
"format": "date-time"
|
|
177
|
+
},
|
|
178
|
+
"nullableBoolean": {
|
|
179
|
+
"type": [
|
|
180
|
+
"boolean",
|
|
181
|
+
"null"
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
"nullableNonNegativeInteger": {
|
|
185
|
+
"type": [
|
|
186
|
+
"integer",
|
|
187
|
+
"null"
|
|
188
|
+
],
|
|
189
|
+
"minimum": 0
|
|
190
|
+
},
|
|
191
|
+
"nullablePositiveInteger": {
|
|
192
|
+
"type": [
|
|
193
|
+
"integer",
|
|
194
|
+
"null"
|
|
195
|
+
],
|
|
196
|
+
"minimum": 1
|
|
197
|
+
},
|
|
198
|
+
"nullableStringArray": {
|
|
199
|
+
"oneOf": [
|
|
200
|
+
{
|
|
201
|
+
"type": "array",
|
|
202
|
+
"items": {
|
|
203
|
+
"type": "string"
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"type": "null"
|
|
208
|
+
}
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|