@pellux/goodvibes-sdk 1.1.0 → 1.3.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.
- package/dist/contracts/artifacts/operator-contract.json +1416 -88
- package/dist/platform/companion/companion-chat-manager.d.ts +6 -12
- package/dist/platform/companion/companion-chat-manager.d.ts.map +1 -1
- package/dist/platform/companion/companion-chat-manager.js +8 -2
- package/dist/platform/config/index.d.ts +2 -1
- package/dist/platform/config/index.d.ts.map +1 -1
- package/dist/platform/config/index.js +1 -0
- package/dist/platform/config/manager.d.ts +35 -0
- package/dist/platform/config/manager.d.ts.map +1 -1
- package/dist/platform/config/manager.js +98 -2
- package/dist/platform/config/shared-config-tier.d.ts +51 -0
- package/dist/platform/config/shared-config-tier.d.ts.map +1 -0
- package/dist/platform/config/shared-config-tier.js +127 -0
- package/dist/platform/control-plane/method-catalog-runtime.d.ts.map +1 -1
- package/dist/platform/control-plane/method-catalog-runtime.js +95 -1
- package/dist/platform/control-plane/operator-contract-schemas-knowledge.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract-schemas-knowledge.js +6 -1
- package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts +7 -0
- package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts.map +1 -1
- package/dist/platform/control-plane/operator-contract-schemas-runtime.js +40 -1
- package/dist/platform/daemon/facade-composition.d.ts.map +1 -1
- package/dist/platform/daemon/facade-composition.js +1 -0
- package/dist/platform/daemon/homeassistant-chat.d.ts +4 -1
- package/dist/platform/daemon/homeassistant-chat.d.ts.map +1 -1
- package/dist/platform/daemon/homeassistant-chat.js +1 -1
- package/dist/platform/daemon/http/homeassistant-routes.d.ts.map +1 -1
- package/dist/platform/daemon/http/homeassistant-routes.js +28 -2
- package/dist/platform/integrations/webhooks.d.ts +15 -0
- package/dist/platform/integrations/webhooks.d.ts.map +1 -1
- package/dist/platform/integrations/webhooks.js +18 -0
- package/dist/platform/knowledge/extraction-policy.d.ts +12 -1
- package/dist/platform/knowledge/extraction-policy.d.ts.map +1 -1
- package/dist/platform/knowledge/extraction-policy.js +19 -1
- package/dist/platform/knowledge/graphql-schema.d.ts +1 -1
- package/dist/platform/knowledge/graphql-schema.d.ts.map +1 -1
- package/dist/platform/knowledge/graphql-schema.js +5 -0
- package/dist/platform/knowledge/home-graph/index.d.ts.map +1 -1
- package/dist/platform/knowledge/home-graph/index.js +4 -0
- package/dist/platform/knowledge/home-graph/link.d.ts +2 -2
- package/dist/platform/knowledge/home-graph/link.d.ts.map +1 -1
- package/dist/platform/knowledge/home-graph/link.js +60 -9
- package/dist/platform/knowledge/home-graph/refinement.d.ts +14 -9
- package/dist/platform/knowledge/home-graph/refinement.d.ts.map +1 -1
- package/dist/platform/knowledge/home-graph/refinement.js +18 -3
- package/dist/platform/knowledge/home-graph/reset.js +21 -4
- package/dist/platform/knowledge/home-graph/service.d.ts +10 -11
- package/dist/platform/knowledge/home-graph/service.d.ts.map +1 -1
- package/dist/platform/knowledge/home-graph/triage.d.ts +103 -0
- package/dist/platform/knowledge/home-graph/triage.d.ts.map +1 -0
- package/dist/platform/knowledge/home-graph/triage.js +362 -0
- package/dist/platform/knowledge/home-graph/types.d.ts +15 -0
- package/dist/platform/knowledge/home-graph/types.d.ts.map +1 -1
- package/dist/platform/knowledge/knowledge-api.d.ts +6 -0
- package/dist/platform/knowledge/knowledge-api.d.ts.map +1 -1
- package/dist/platform/knowledge/knowledge-api.js +5 -0
- package/dist/platform/knowledge/knowledge-history-types.d.ts +56 -0
- package/dist/platform/knowledge/knowledge-history-types.d.ts.map +1 -0
- package/dist/platform/knowledge/knowledge-history-types.js +1 -0
- package/dist/platform/knowledge/packet.d.ts.map +1 -1
- package/dist/platform/knowledge/packet.js +27 -3
- package/dist/platform/knowledge/scope-records.js +4 -2
- package/dist/platform/knowledge/semantic/answer-gaps.d.ts +8 -0
- package/dist/platform/knowledge/semantic/answer-gaps.d.ts.map +1 -1
- package/dist/platform/knowledge/semantic/answer-gaps.js +26 -6
- package/dist/platform/knowledge/semantic/enrichment.d.ts.map +1 -1
- package/dist/platform/knowledge/semantic/enrichment.js +15 -13
- package/dist/platform/knowledge/semantic/graph-index.d.ts.map +1 -1
- package/dist/platform/knowledge/semantic/graph-index.js +3 -1
- package/dist/platform/knowledge/semantic/service.d.ts +7 -0
- package/dist/platform/knowledge/semantic/service.d.ts.map +1 -1
- package/dist/platform/knowledge/semantic/service.js +10 -1
- package/dist/platform/knowledge/service-node-admin.d.ts +46 -0
- package/dist/platform/knowledge/service-node-admin.d.ts.map +1 -0
- package/dist/platform/knowledge/service-node-admin.js +72 -0
- package/dist/platform/knowledge/service.d.ts +24 -20
- package/dist/platform/knowledge/service.d.ts.map +1 -1
- package/dist/platform/knowledge/service.js +23 -47
- package/dist/platform/knowledge/store-config.d.ts +34 -0
- package/dist/platform/knowledge/store-config.d.ts.map +1 -1
- package/dist/platform/knowledge/store-config.js +23 -0
- package/dist/platform/knowledge/store-load.d.ts +3 -1
- package/dist/platform/knowledge/store-load.d.ts.map +1 -1
- package/dist/platform/knowledge/store-load.js +3 -1
- package/dist/platform/knowledge/store-node-history.d.ts +49 -0
- package/dist/platform/knowledge/store-node-history.d.ts.map +1 -0
- package/dist/platform/knowledge/store-node-history.js +331 -0
- package/dist/platform/knowledge/store-record-delete.d.ts +25 -0
- package/dist/platform/knowledge/store-record-delete.d.ts.map +1 -0
- package/dist/platform/knowledge/store-record-delete.js +84 -0
- package/dist/platform/knowledge/store-schema.d.ts +3 -1
- package/dist/platform/knowledge/store-schema.d.ts.map +1 -1
- package/dist/platform/knowledge/store-schema.js +66 -0
- package/dist/platform/knowledge/store.d.ts +19 -1
- package/dist/platform/knowledge/store.d.ts.map +1 -1
- package/dist/platform/knowledge/store.js +69 -108
- package/dist/platform/knowledge/types.d.ts +18 -0
- package/dist/platform/knowledge/types.d.ts.map +1 -1
- package/dist/platform/providers/registry.d.ts +18 -0
- package/dist/platform/providers/registry.d.ts.map +1 -1
- package/dist/platform/providers/registry.js +49 -3
- package/dist/platform/providers/runtime-snapshot.d.ts.map +1 -1
- package/dist/platform/providers/runtime-snapshot.js +14 -2
- package/dist/platform/runtime/memory-spine/client.d.ts +137 -12
- package/dist/platform/runtime/memory-spine/client.d.ts.map +1 -1
- package/dist/platform/runtime/memory-spine/client.js +119 -1
- package/dist/platform/runtime/memory-spine/index.d.ts +8 -1
- package/dist/platform/runtime/memory-spine/index.d.ts.map +1 -1
- package/dist/platform/runtime/memory-spine/index.js +7 -0
- package/dist/platform/runtime/memory-spine/recall-snapshot.d.ts +74 -0
- package/dist/platform/runtime/memory-spine/recall-snapshot.d.ts.map +1 -0
- package/dist/platform/runtime/memory-spine/recall-snapshot.js +87 -0
- package/dist/platform/runtime/memory-spine/wire-verb-availability.d.ts +59 -0
- package/dist/platform/runtime/memory-spine/wire-verb-availability.d.ts.map +1 -0
- package/dist/platform/runtime/memory-spine/wire-verb-availability.js +114 -0
- package/dist/platform/runtime/services.d.ts.map +1 -1
- package/dist/platform/runtime/services.js +3 -12
- package/dist/platform/state/memory-recall-contract.d.ts +7 -0
- package/dist/platform/state/memory-recall-contract.d.ts.map +1 -1
- package/dist/platform/state/memory-recall-contract.js +2 -0
- package/dist/platform/utils/notify.d.ts +25 -1
- package/dist/platform/utils/notify.d.ts.map +1 -1
- package/dist/platform/utils/notify.js +29 -1
- package/dist/platform/version.js +1 -1
- package/dist/platform/voice/index.d.ts +2 -0
- package/dist/platform/voice/index.d.ts.map +1 -1
- package/dist/platform/voice/index.js +3 -0
- package/dist/platform/voice/spoken-turn/audio-sink.d.ts +111 -0
- package/dist/platform/voice/spoken-turn/audio-sink.d.ts.map +1 -0
- package/dist/platform/voice/spoken-turn/audio-sink.js +1 -0
- package/dist/platform/voice/spoken-turn/controller.d.ts +117 -0
- package/dist/platform/voice/spoken-turn/controller.d.ts.map +1 -0
- package/dist/platform/voice/spoken-turn/controller.js +448 -0
- package/dist/platform/voice/spoken-turn/index.d.ts +16 -0
- package/dist/platform/voice/spoken-turn/index.d.ts.map +1 -0
- package/dist/platform/voice/spoken-turn/index.js +12 -0
- package/dist/platform/voice/spoken-turn/text-chunker.d.ts +33 -0
- package/dist/platform/voice/spoken-turn/text-chunker.d.ts.map +1 -0
- package/dist/platform/voice/spoken-turn/text-chunker.js +97 -0
- package/package.json +9 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EMPTY_OBJECT_SCHEMA, BOOLEAN_SCHEMA, STRING_SCHEMA, NUMBER_SCHEMA, objectSchema, listOutputSchema, entityOutputSchema, bodyEnvelopeSchema, methodDescriptor, runtimeEventId, arraySchema, } from './method-catalog-shared.js';
|
|
2
2
|
import { enumSchema, nullableSchema } from './operator-contract-schemas-shared.js';
|
|
3
|
-
import { CONTINUITY_SNAPSHOT_SCHEMA, DISTRIBUTED_NODE_HOST_CONTRACT_SCHEMA, HEALTH_SNAPSHOT_SCHEMA, INTELLIGENCE_SNAPSHOT_SCHEMA, MEMORY_DOCTOR_REPORT_SCHEMA, MEMORY_VECTOR_STATS_SCHEMA, MEMORY_CLASS_SCHEMA, MEMORY_SCOPE_SCHEMA, MEMORY_REVIEW_STATE_SCHEMA, MEMORY_PROVENANCE_KIND_SCHEMA, MEMORY_PROVENANCE_LINK_SCHEMA, MEMORY_RECORD_SCHEMA, MEMORY_RECORD_SEARCH_OUTPUT_SCHEMA, MEMORY_RECORD_DELETE_OUTPUT_SCHEMA, PROVIDER_ACCOUNT_SNAPSHOT_SCHEMA, PROVIDER_RUNTIME_SNAPSHOT_SCHEMA, PROVIDER_USAGE_SNAPSHOT_SCHEMA, REMOTE_PAIR_APPROVAL_OUTPUT_SCHEMA, REMOTE_PAIR_REQUEST_OUTPUT_SCHEMA, REMOTE_PAIR_REQUESTS_OUTPUT_SCHEMA, REMOTE_PEERS_OUTPUT_SCHEMA, REMOTE_PAIR_REQUEST_ACTION_INPUT_SCHEMA, REMOTE_PEER_DISCONNECT_INPUT_SCHEMA, REMOTE_PEER_INVOKE_INPUT_SCHEMA, REMOTE_PEER_INVOKE_OUTPUT_SCHEMA, REMOTE_PEER_OUTPUT_SCHEMA, REMOTE_PEER_TOKEN_REVOKE_INPUT_SCHEMA, REMOTE_PEER_TOKEN_ROTATE_INPUT_SCHEMA, REMOTE_PEER_TOKEN_ROTATE_OUTPUT_SCHEMA, REMOTE_SNAPSHOT_SCHEMA, REMOTE_WORK_LIST_OUTPUT_SCHEMA, REMOTE_WORK_CANCEL_INPUT_SCHEMA, REMOTE_WORK_OUTPUT_SCHEMA, SECURITY_SETTINGS_REPORT_SCHEMA, SETTINGS_SNAPSHOT_SCHEMA, WORKTREE_SNAPSHOT_SCHEMA, } from './operator-contract-schemas.js';
|
|
3
|
+
import { CONTINUITY_SNAPSHOT_SCHEMA, DISTRIBUTED_NODE_HOST_CONTRACT_SCHEMA, HEALTH_SNAPSHOT_SCHEMA, INTELLIGENCE_SNAPSHOT_SCHEMA, MEMORY_DOCTOR_REPORT_SCHEMA, MEMORY_VECTOR_STATS_SCHEMA, MEMORY_CLASS_SCHEMA, MEMORY_SCOPE_SCHEMA, MEMORY_REVIEW_STATE_SCHEMA, MEMORY_PROVENANCE_KIND_SCHEMA, MEMORY_PROVENANCE_LINK_SCHEMA, MEMORY_RECORD_SCHEMA, MEMORY_RECORD_SEARCH_OUTPUT_SCHEMA, MEMORY_RECORD_DELETE_OUTPUT_SCHEMA, MEMORY_LINK_SCHEMA, MEMORY_BUNDLE_SCHEMA, MEMORY_IMPORT_RESULT_SCHEMA, MEMORY_RECORD_LIST_OUTPUT_SCHEMA, MEMORY_RECORD_SEMANTIC_OUTPUT_SCHEMA, MEMORY_RECORD_LINKS_OUTPUT_SCHEMA, PROVIDER_ACCOUNT_SNAPSHOT_SCHEMA, PROVIDER_RUNTIME_SNAPSHOT_SCHEMA, PROVIDER_USAGE_SNAPSHOT_SCHEMA, REMOTE_PAIR_APPROVAL_OUTPUT_SCHEMA, REMOTE_PAIR_REQUEST_OUTPUT_SCHEMA, REMOTE_PAIR_REQUESTS_OUTPUT_SCHEMA, REMOTE_PEERS_OUTPUT_SCHEMA, REMOTE_PAIR_REQUEST_ACTION_INPUT_SCHEMA, REMOTE_PEER_DISCONNECT_INPUT_SCHEMA, REMOTE_PEER_INVOKE_INPUT_SCHEMA, REMOTE_PEER_INVOKE_OUTPUT_SCHEMA, REMOTE_PEER_OUTPUT_SCHEMA, REMOTE_PEER_TOKEN_REVOKE_INPUT_SCHEMA, REMOTE_PEER_TOKEN_ROTATE_INPUT_SCHEMA, REMOTE_PEER_TOKEN_ROTATE_OUTPUT_SCHEMA, REMOTE_SNAPSHOT_SCHEMA, REMOTE_WORK_LIST_OUTPUT_SCHEMA, REMOTE_WORK_CANCEL_INPUT_SCHEMA, REMOTE_WORK_OUTPUT_SCHEMA, SECURITY_SETTINGS_REPORT_SCHEMA, SETTINGS_SNAPSHOT_SCHEMA, WORKTREE_SNAPSHOT_SCHEMA, } from './operator-contract-schemas.js';
|
|
4
4
|
const MCP_SCOPE_SCHEMA = enumSchema(['project', 'global']);
|
|
5
5
|
const MCP_SERVER_CONFIG_SCHEMA = objectSchema({
|
|
6
6
|
name: STRING_SCHEMA,
|
|
@@ -71,6 +71,20 @@ const MCP_TOOL_SCHEMA = objectSchema({
|
|
|
71
71
|
const MCP_TOOLS_RESPONSE_SCHEMA = objectSchema({
|
|
72
72
|
tools: arraySchema(MCP_TOOL_SCHEMA),
|
|
73
73
|
}, ['tools']);
|
|
74
|
+
/** The shared memory search-filter fields (no `recall` — that is search-only). Reused by list / search-semantic / export. */
|
|
75
|
+
const MEMORY_SEARCH_FILTER_FIELDS = {
|
|
76
|
+
scope: MEMORY_SCOPE_SCHEMA,
|
|
77
|
+
cls: MEMORY_CLASS_SCHEMA,
|
|
78
|
+
tags: arraySchema(STRING_SCHEMA),
|
|
79
|
+
query: STRING_SCHEMA,
|
|
80
|
+
semantic: BOOLEAN_SCHEMA,
|
|
81
|
+
since: NUMBER_SCHEMA,
|
|
82
|
+
reviewState: arraySchema(MEMORY_REVIEW_STATE_SCHEMA),
|
|
83
|
+
minConfidence: NUMBER_SCHEMA,
|
|
84
|
+
provenanceKinds: arraySchema(MEMORY_PROVENANCE_KIND_SCHEMA),
|
|
85
|
+
staleOnly: BOOLEAN_SCHEMA,
|
|
86
|
+
limit: NUMBER_SCHEMA,
|
|
87
|
+
};
|
|
74
88
|
export const builtinGatewayRuntimeMethodDescriptors = [
|
|
75
89
|
methodDescriptor({
|
|
76
90
|
id: 'mcp.config.get',
|
|
@@ -515,6 +529,86 @@ export const builtinGatewayRuntimeMethodDescriptors = [
|
|
|
515
529
|
inputSchema: objectSchema({ id: STRING_SCHEMA }, ['id']),
|
|
516
530
|
outputSchema: MEMORY_RECORD_DELETE_OUTPUT_SCHEMA,
|
|
517
531
|
}),
|
|
532
|
+
methodDescriptor({
|
|
533
|
+
id: 'memory.records.list',
|
|
534
|
+
title: 'List Memory Records',
|
|
535
|
+
description: 'Bulk read from the canonical store: a literal (non-semantic) search returning the matching records as a plain array. An empty filter returns every record (getAll). This is the read a client surface uses instead of opening the store file for its browse/list and knowledge-injection paths.',
|
|
536
|
+
category: 'memory',
|
|
537
|
+
scopes: ['read:memory'],
|
|
538
|
+
http: { method: 'POST', path: '/api/memory/records/list' },
|
|
539
|
+
inputSchema: bodyEnvelopeSchema({ ...MEMORY_SEARCH_FILTER_FIELDS }),
|
|
540
|
+
outputSchema: MEMORY_RECORD_LIST_OUTPUT_SCHEMA,
|
|
541
|
+
}),
|
|
542
|
+
methodDescriptor({
|
|
543
|
+
id: 'memory.records.search-semantic',
|
|
544
|
+
title: 'Semantic Search Memory Records',
|
|
545
|
+
description: 'Rank records by semantic similarity against the query, returning scored results (distance, similarity, score). When the query has no vector match the store falls back to a lexical ranking rather than a silent empty. distance is null for a fallback (non-vector) result. Read-only against the daemon\'s canonical index.',
|
|
546
|
+
category: 'memory',
|
|
547
|
+
scopes: ['read:memory'],
|
|
548
|
+
http: { method: 'POST', path: '/api/memory/records/search-semantic' },
|
|
549
|
+
inputSchema: bodyEnvelopeSchema({ ...MEMORY_SEARCH_FILTER_FIELDS }),
|
|
550
|
+
outputSchema: MEMORY_RECORD_SEMANTIC_OUTPUT_SCHEMA,
|
|
551
|
+
}),
|
|
552
|
+
methodDescriptor({
|
|
553
|
+
id: 'memory.records.export',
|
|
554
|
+
title: 'Export Memory Bundle',
|
|
555
|
+
description: 'Export a no-loss bundle (records + links) for the given filter from the canonical store. The bundle round-trips through import id-keyed, so it is the wire form of the cross-surface fold/reconcile seam. Read-only.',
|
|
556
|
+
category: 'memory',
|
|
557
|
+
scopes: ['read:memory'],
|
|
558
|
+
http: { method: 'POST', path: '/api/memory/records/export' },
|
|
559
|
+
inputSchema: bodyEnvelopeSchema({ ...MEMORY_SEARCH_FILTER_FIELDS }),
|
|
560
|
+
outputSchema: entityOutputSchema('bundle', MEMORY_BUNDLE_SCHEMA),
|
|
561
|
+
}),
|
|
562
|
+
methodDescriptor({
|
|
563
|
+
id: 'memory.records.import',
|
|
564
|
+
title: 'Import Memory Bundle',
|
|
565
|
+
description: 'Import a bundle into the canonical store as an id-keyed union: an id already present is left untouched (counted skipped), a new id is added; a link is added only when both its endpoints exist. Never overwrites, never deletes, idempotent on re-run. The daemon is the single writer, so a client imports here instead of writing the store file.',
|
|
566
|
+
category: 'memory',
|
|
567
|
+
scopes: ['write:memory'],
|
|
568
|
+
http: { method: 'POST', path: '/api/memory/records/import' },
|
|
569
|
+
inputSchema: bodyEnvelopeSchema({ bundle: MEMORY_BUNDLE_SCHEMA }, ['bundle']),
|
|
570
|
+
outputSchema: entityOutputSchema('result', MEMORY_IMPORT_RESULT_SCHEMA),
|
|
571
|
+
}),
|
|
572
|
+
methodDescriptor({
|
|
573
|
+
id: 'memory.records.update',
|
|
574
|
+
title: 'Update Memory Record',
|
|
575
|
+
description: 'Edit a record\'s content fields (scope, summary, detail, tags) in the canonical store. This is distinct from the review update: it changes the record itself — e.g. moving scope project→team promotes a record to the shared surface. Returns 404 when no record with that id exists.',
|
|
576
|
+
category: 'memory',
|
|
577
|
+
scopes: ['write:memory'],
|
|
578
|
+
http: { method: 'POST', path: '/api/memory/records/{id}/update' },
|
|
579
|
+
inputSchema: bodyEnvelopeSchema({
|
|
580
|
+
id: STRING_SCHEMA,
|
|
581
|
+
scope: MEMORY_SCOPE_SCHEMA,
|
|
582
|
+
summary: STRING_SCHEMA,
|
|
583
|
+
detail: STRING_SCHEMA,
|
|
584
|
+
tags: arraySchema(STRING_SCHEMA),
|
|
585
|
+
}, ['id']),
|
|
586
|
+
outputSchema: entityOutputSchema('record', MEMORY_RECORD_SCHEMA),
|
|
587
|
+
}),
|
|
588
|
+
methodDescriptor({
|
|
589
|
+
id: 'memory.records.links.list',
|
|
590
|
+
title: 'List Memory Record Links',
|
|
591
|
+
description: 'Return every link where the record is the source or the target. Returns 404 when no record with that id exists — an honest not-found, distinct from a record that exists but has no links (an empty array).',
|
|
592
|
+
category: 'memory',
|
|
593
|
+
scopes: ['read:memory'],
|
|
594
|
+
http: { method: 'GET', path: '/api/memory/records/{id}/links' },
|
|
595
|
+
inputSchema: objectSchema({ id: STRING_SCHEMA }, ['id']),
|
|
596
|
+
outputSchema: MEMORY_RECORD_LINKS_OUTPUT_SCHEMA,
|
|
597
|
+
}),
|
|
598
|
+
methodDescriptor({
|
|
599
|
+
id: 'memory.records.links.add',
|
|
600
|
+
title: 'Link Memory Records',
|
|
601
|
+
description: 'Create a directed relation (e.g. "supersedes", "caused") from the path record to a target record. Returns 404 when either endpoint does not exist — never a 200 that pretends a link was made between records that do not both exist.',
|
|
602
|
+
category: 'memory',
|
|
603
|
+
scopes: ['write:memory'],
|
|
604
|
+
http: { method: 'POST', path: '/api/memory/records/{id}/links' },
|
|
605
|
+
inputSchema: bodyEnvelopeSchema({
|
|
606
|
+
id: STRING_SCHEMA,
|
|
607
|
+
toId: STRING_SCHEMA,
|
|
608
|
+
relation: STRING_SCHEMA,
|
|
609
|
+
}, ['id', 'toId', 'relation']),
|
|
610
|
+
outputSchema: entityOutputSchema('link', MEMORY_LINK_SCHEMA),
|
|
611
|
+
}),
|
|
518
612
|
methodDescriptor({
|
|
519
613
|
id: 'scheduler.capacity',
|
|
520
614
|
title: 'Scheduler Capacity',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator-contract-schemas-knowledge.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas-knowledge.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,qCAAqC,yBAA6C,CAAC;AAChG,eAAO,MAAM,iCAAiC,yBAAqC,CAAC;AACpF,eAAO,MAAM,oCAAoC,yBAA4B,CAAC;AAC9E,eAAO,MAAM,sCAAsC,yBAAqE,CAAC;AACzH,eAAO,MAAM,4BAA4B,yBAWvC,CAAC;AACH,eAAO,MAAM,8BAA8B,yBAAkD,CAAC;AAC9F,eAAO,MAAM,yBAAyB,yBAAuC,CAAC;AAC9E,eAAO,MAAM,2BAA2B,yBAA2D,CAAC;AACpG,eAAO,MAAM,sCAAsC,yBAcjD,CAAC;AACH,eAAO,MAAM,wCAAwC,yBAOnD,CAAC;AACH,eAAO,MAAM,yCAAyC,yBAAkD,CAAC;AACzG,eAAO,MAAM,yBAAyB,yBAWpC,CAAC;AACH,eAAO,MAAM,uCAAuC,yBAAgD,CAAC;AACrG,eAAO,MAAM,2CAA2C,yBAAmE,CAAC;AAC5H,eAAO,MAAM,6CAA6C,yBAQxD,CAAC;AACH,eAAO,MAAM,wCAAwC,yBAAuC,CAAC;AAwB7F,eAAO,MAAM,oCAAoC;;CAMvC,CAAC;AACX,eAAO,MAAM,+BAA+B;;CAOlC,CAAC;AA4DX,eAAO,MAAM,+BAA+B;;CAYlC,CAAC;AACX,eAAO,MAAM,gCAAgC,yBAIN,CAAC;AACxC,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiB1C,CAAC;AACX,eAAO,MAAM,qCAAqC,yBAOM,CAAC;AACzD,eAAO,MAAM,0BAA0B,yBAY4H,CAAC;AACpK,eAAO,MAAM,iCAAiC,yBAGI,CAAC;AAEnD,eAAO,MAAM,uBAAuB,yBAoB2F,CAAC;AAEhI,eAAO,MAAM,qBAAqB,yBAiB0G,CAAC;AAE7I,eAAO,MAAM,sBAAsB,yBAWsF,CAAC;AAE1H,eAAO,MAAM,qBAAqB,yBAW4G,CAAC;AAE/I,eAAO,MAAM,2BAA2B,yBAgBkI,CAAC;AAE3K,eAAO,MAAM,uBAAuB,yBAciL,CAAC;AAEtN,eAAO,MAAM,gCAAgC,yBAyBiH,CAAC;AAE/J,eAAO,MAAM,wCAAwC,yBAER,CAAC;AAE9C,eAAO,MAAM,uCAAuC,yBAER,CAAC;AAE7C,eAAO,MAAM,sCAAsC,yBAsB4H,CAAC;AAEhL,eAAO,MAAM,0BAA0B,yBAOD,CAAC;AAoBvC,eAAO,MAAM,0BAA0B,yBAWgC,CAAC;AAmBxE,eAAO,MAAM,8BAA8B,yBAIa,CAAC;AAEzD,eAAO,MAAM,oCAAoC,yBAKF,CAAC;AAWhD,eAAO,MAAM,oCAAoC,yBAMU,CAAC;AAW5D,eAAO,MAAM,8BAA8B,yBAE5B,CAAC;AAEhB,eAAO,MAAM,2BAA2B,yBAe2C,CAAC;AAEpF,eAAO,MAAM,+BAA+B,yBAAuD,CAAC;AACpG,eAAO,MAAM,6BAA6B,yBAAmD,CAAC;AAC9F,eAAO,MAAM,8BAA8B,yBAAqD,CAAC;AACjG,eAAO,MAAM,oCAAoC,yBAOE,CAAC;AACpD,eAAO,MAAM,kCAAkC,yBAA6D,CAAC;AAgB7G,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"operator-contract-schemas-knowledge.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas-knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -510,8 +510,13 @@ export const KNOWLEDGE_PACKET_SCHEMA = objectSchema({
|
|
|
510
510
|
strategy: STRING_SCHEMA,
|
|
511
511
|
budgetLimit: NUMBER_SCHEMA,
|
|
512
512
|
estimatedTokens: NUMBER_SCHEMA,
|
|
513
|
+
truncated: BOOLEAN_SCHEMA,
|
|
514
|
+
totalCandidates: NUMBER_SCHEMA,
|
|
515
|
+
droppedCount: NUMBER_SCHEMA,
|
|
516
|
+
droppedForBudget: NUMBER_SCHEMA,
|
|
517
|
+
budgetExhausted: BOOLEAN_SCHEMA,
|
|
513
518
|
items: arraySchema(KNOWLEDGE_PACKET_ITEM_SCHEMA),
|
|
514
|
-
}, ['task', 'writeScope', 'generatedAt', 'detail', 'strategy', 'budgetLimit', 'estimatedTokens', 'items']);
|
|
519
|
+
}, ['task', 'writeScope', 'generatedAt', 'detail', 'strategy', 'budgetLimit', 'estimatedTokens', 'truncated', 'totalCandidates', 'droppedCount', 'droppedForBudget', 'budgetExhausted', 'items']);
|
|
515
520
|
const KNOWLEDGE_USAGE_SCHEMA = objectSchema({
|
|
516
521
|
id: STRING_SCHEMA,
|
|
517
522
|
targetKind: STRING_SCHEMA,
|
|
@@ -73,4 +73,11 @@ export declare const MEMORY_PROVENANCE_LINK_SCHEMA: Record<string, unknown>;
|
|
|
73
73
|
export declare const MEMORY_RECORD_SCHEMA: Record<string, unknown>;
|
|
74
74
|
export declare const MEMORY_RECORD_SEARCH_OUTPUT_SCHEMA: Record<string, unknown>;
|
|
75
75
|
export declare const MEMORY_RECORD_DELETE_OUTPUT_SCHEMA: Record<string, unknown>;
|
|
76
|
+
export declare const MEMORY_LINK_SCHEMA: Record<string, unknown>;
|
|
77
|
+
export declare const MEMORY_SEMANTIC_RESULT_SCHEMA: Record<string, unknown>;
|
|
78
|
+
export declare const MEMORY_BUNDLE_SCHEMA: Record<string, unknown>;
|
|
79
|
+
export declare const MEMORY_IMPORT_RESULT_SCHEMA: Record<string, unknown>;
|
|
80
|
+
export declare const MEMORY_RECORD_LIST_OUTPUT_SCHEMA: Record<string, unknown>;
|
|
81
|
+
export declare const MEMORY_RECORD_SEMANTIC_OUTPUT_SCHEMA: Record<string, unknown>;
|
|
82
|
+
export declare const MEMORY_RECORD_LINKS_OUTPUT_SCHEMA: Record<string, unknown>;
|
|
76
83
|
//# sourceMappingURL=operator-contract-schemas-runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operator-contract-schemas-runtime.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas-runtime.ts"],"names":[],"mappings":"AAmCA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,+BAA+B,EAAyB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA6B7F,eAAO,MAAM,iCAAiC,yBAQA,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,yBAOe,CAAC;AAEjE,eAAO,MAAM,6BAA6B,yBAasB,CAAC;AAEjE,eAAO,MAAM,4BAA4B,yBAuBqI,CAAC;AAE/K,eAAO,MAAM,6BAA6B,yBAYsF,CAAC;AAEjI,eAAO,MAAM,6BAA6B,yBAO4B,CAAC;AAEvE,eAAO,MAAM,2CAA2C,yBAG7B,CAAC;AAE5B,eAAO,MAAM,mCAAmC,yBAOtB,CAAC;AAE3B,eAAO,MAAM,mCAAmC,yBAGnB,CAAC;AAE9B,eAAO,MAAM,oCAAoC,yBAkB/C,CAAC;AAEH,eAAO,MAAM,kCAAkC,yBAqB0D,CAAC;AAE1G,eAAO,MAAM,uBAAuB,yBAWoE,CAAC;AAEzG,eAAO,MAAM,8BAA8B,yBAOjB,CAAC;AAE3B,eAAO,MAAM,mCAAmC,yBAGrB,CAAC;AAE5B,eAAO,MAAM,iCAAiC,yBAGrB,CAAC;AAE1B,eAAO,MAAM,mCAAmC,yBAEjC,CAAC;AAEhB;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,yBAIvB,CAAC;AAE5B,eAAO,MAAM,+CAA+C,yBAIlB,CAAC;AAE3C,eAAO,MAAM,2CAA2C,yBAMF,CAAC;AAEvD,eAAO,MAAM,0CAA0C;;CAK7C,CAAC;AAUX,eAAO,MAAM,mBAAmB,yBAqByD,CAAC;AAE1F,eAAO,MAAM,oBAAoB,yBAsBsB,CAAC;AAExD,eAAO,MAAM,wBAAwB,yBAgBO,CAAC;AAE7C,eAAO,MAAM,yBAAyB,yBASc,CAAC;AAErD,eAAO,MAAM,kBAAkB,yBAEnB,CAAC;AAEb,eAAO,MAAM,yBAAyB,yBAIM,CAAC;AAE7C,eAAO,MAAM,yBAAyB,yBAUiE,CAAC;AAWxG,eAAO,MAAM,6BAA6B,yBAgB8C,CAAC;AAEzF,eAAO,MAAM,wBAAwB,yBASuG,CAAC;AAE7I,eAAO,MAAM,4BAA4B,yBAIU,CAAC;AAOpD,eAAO,MAAM,6BAA6B,yBAKS,CAAC;AAEpD,eAAO,MAAM,6BAA6B,yBAE1B,CAAC;AA0EjB,eAAO,MAAM,gCAAgC,yBAMkB,CAAC;AAEhE,eAAO,MAAM,8BAA8B,yBAcqD,CAAC;AAqEjG,eAAO,MAAM,gCAAgC,yBAKmB,CAAC;AAEjE,eAAO,MAAM,sBAAsB,yBAcyF,CAAC;AAE7H,eAAO,MAAM,4BAA4B,yBASyG,CAAC;AAqBnJ,eAAO,MAAM,0BAA0B,yBAUyH,CAAC;AAEjK,eAAO,MAAM,2BAA2B,yBAIC,CAAC;AAG1C,eAAO,MAAM,mBAAmB,yBAA6C,CAAC;AAC9E,eAAO,MAAM,mBAAmB,yBAE9B,CAAC;AACH,eAAO,MAAM,0BAA0B,yBAA6D,CAAC;AACrG,eAAO,MAAM,6BAA6B,yBAA2D,CAAC;AAEtG,eAAO,MAAM,6BAA6B,yBAIvB,CAAC;AAEpB,eAAO,MAAM,oBAAoB,yBAeiH,CAAC;AAEnJ,eAAO,MAAM,kCAAkC,
|
|
1
|
+
{"version":3,"file":"operator-contract-schemas-runtime.d.ts","sourceRoot":"","sources":["../../../src/platform/control-plane/operator-contract-schemas-runtime.ts"],"names":[],"mappings":"AAmCA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,+BAA+B,EAAyB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA6B7F,eAAO,MAAM,iCAAiC,yBAQA,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,yBAOe,CAAC;AAEjE,eAAO,MAAM,6BAA6B,yBAasB,CAAC;AAEjE,eAAO,MAAM,4BAA4B,yBAuBqI,CAAC;AAE/K,eAAO,MAAM,6BAA6B,yBAYsF,CAAC;AAEjI,eAAO,MAAM,6BAA6B,yBAO4B,CAAC;AAEvE,eAAO,MAAM,2CAA2C,yBAG7B,CAAC;AAE5B,eAAO,MAAM,mCAAmC,yBAOtB,CAAC;AAE3B,eAAO,MAAM,mCAAmC,yBAGnB,CAAC;AAE9B,eAAO,MAAM,oCAAoC,yBAkB/C,CAAC;AAEH,eAAO,MAAM,kCAAkC,yBAqB0D,CAAC;AAE1G,eAAO,MAAM,uBAAuB,yBAWoE,CAAC;AAEzG,eAAO,MAAM,8BAA8B,yBAOjB,CAAC;AAE3B,eAAO,MAAM,mCAAmC,yBAGrB,CAAC;AAE5B,eAAO,MAAM,iCAAiC,yBAGrB,CAAC;AAE1B,eAAO,MAAM,mCAAmC,yBAEjC,CAAC;AAEhB;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,yBAIvB,CAAC;AAE5B,eAAO,MAAM,+CAA+C,yBAIlB,CAAC;AAE3C,eAAO,MAAM,2CAA2C,yBAMF,CAAC;AAEvD,eAAO,MAAM,0CAA0C;;CAK7C,CAAC;AAUX,eAAO,MAAM,mBAAmB,yBAqByD,CAAC;AAE1F,eAAO,MAAM,oBAAoB,yBAsBsB,CAAC;AAExD,eAAO,MAAM,wBAAwB,yBAgBO,CAAC;AAE7C,eAAO,MAAM,yBAAyB,yBASc,CAAC;AAErD,eAAO,MAAM,kBAAkB,yBAEnB,CAAC;AAEb,eAAO,MAAM,yBAAyB,yBAIM,CAAC;AAE7C,eAAO,MAAM,yBAAyB,yBAUiE,CAAC;AAWxG,eAAO,MAAM,6BAA6B,yBAgB8C,CAAC;AAEzF,eAAO,MAAM,wBAAwB,yBASuG,CAAC;AAE7I,eAAO,MAAM,4BAA4B,yBAIU,CAAC;AAOpD,eAAO,MAAM,6BAA6B,yBAKS,CAAC;AAEpD,eAAO,MAAM,6BAA6B,yBAE1B,CAAC;AA0EjB,eAAO,MAAM,gCAAgC,yBAMkB,CAAC;AAEhE,eAAO,MAAM,8BAA8B,yBAcqD,CAAC;AAqEjG,eAAO,MAAM,gCAAgC,yBAKmB,CAAC;AAEjE,eAAO,MAAM,sBAAsB,yBAcyF,CAAC;AAE7H,eAAO,MAAM,4BAA4B,yBASyG,CAAC;AAqBnJ,eAAO,MAAM,0BAA0B,yBAUyH,CAAC;AAEjK,eAAO,MAAM,2BAA2B,yBAIC,CAAC;AAG1C,eAAO,MAAM,mBAAmB,yBAA6C,CAAC;AAC9E,eAAO,MAAM,mBAAmB,yBAE9B,CAAC;AACH,eAAO,MAAM,0BAA0B,yBAA6D,CAAC;AACrG,eAAO,MAAM,6BAA6B,yBAA2D,CAAC;AAEtG,eAAO,MAAM,6BAA6B,yBAIvB,CAAC;AAEpB,eAAO,MAAM,oBAAoB,yBAeiH,CAAC;AAEnJ,eAAO,MAAM,kCAAkC,yBAWgJ,CAAC;AAEhM,eAAO,MAAM,kCAAkC,yBAG1B,CAAC;AAItB,eAAO,MAAM,kBAAkB,yBAKgB,CAAC;AAIhD,eAAO,MAAM,6BAA6B,yBAKL,CAAC;AAEtC,eAAO,MAAM,oBAAoB,yBAQ2D,CAAC;AAE7F,eAAO,MAAM,2BAA2B,yBAIkB,CAAC;AAE3D,eAAO,MAAM,gCAAgC,yBAE9B,CAAC;AAEhB,eAAO,MAAM,oCAAoC,yBAElC,CAAC;AAEhB,eAAO,MAAM,iCAAiC,yBAEjC,CAAC"}
|
|
@@ -658,8 +658,47 @@ export const MEMORY_RECORD_SEARCH_OUTPUT_SCHEMA = objectSchema({
|
|
|
658
658
|
excludedFlaggedCount: NUMBER_SCHEMA,
|
|
659
659
|
excludedBelowFloorCount: NUMBER_SCHEMA,
|
|
660
660
|
totalBeforeRecallFilter: NUMBER_SCHEMA,
|
|
661
|
-
|
|
661
|
+
recallFloor: NUMBER_SCHEMA,
|
|
662
|
+
}, ['records', 'mode', 'requestedSemantic', 'indexUnavailableReason', 'caveat', 'recallFiltered', 'excludedFlaggedCount', 'excludedBelowFloorCount', 'totalBeforeRecallFilter', 'recallFloor']);
|
|
662
663
|
export const MEMORY_RECORD_DELETE_OUTPUT_SCHEMA = objectSchema({
|
|
663
664
|
id: STRING_SCHEMA,
|
|
664
665
|
deleted: BOOLEAN_SCHEMA,
|
|
665
666
|
}, ['id', 'deleted']);
|
|
667
|
+
// ── Full-detach catalog wire schemas (1.2.0) ──────────────────────────────────
|
|
668
|
+
export const MEMORY_LINK_SCHEMA = objectSchema({
|
|
669
|
+
fromId: STRING_SCHEMA,
|
|
670
|
+
toId: STRING_SCHEMA,
|
|
671
|
+
relation: STRING_SCHEMA,
|
|
672
|
+
createdAt: NUMBER_SCHEMA,
|
|
673
|
+
}, ['fromId', 'toId', 'relation', 'createdAt']);
|
|
674
|
+
// distance may be Infinity for a no-vector-match fallback; JSON serializes that to
|
|
675
|
+
// null, so the wire field is nullable — honest about the "not ranked by vector" case.
|
|
676
|
+
export const MEMORY_SEMANTIC_RESULT_SCHEMA = objectSchema({
|
|
677
|
+
record: MEMORY_RECORD_SCHEMA,
|
|
678
|
+
distance: nullableSchema(NUMBER_SCHEMA),
|
|
679
|
+
similarity: NUMBER_SCHEMA,
|
|
680
|
+
score: NUMBER_SCHEMA,
|
|
681
|
+
}, ['record', 'similarity', 'score']);
|
|
682
|
+
export const MEMORY_BUNDLE_SCHEMA = objectSchema({
|
|
683
|
+
schemaVersion: enumSchema(['v1']),
|
|
684
|
+
exportedAt: NUMBER_SCHEMA,
|
|
685
|
+
scope: enumSchema(['session', 'project', 'team', 'all']),
|
|
686
|
+
recordCount: NUMBER_SCHEMA,
|
|
687
|
+
linkCount: NUMBER_SCHEMA,
|
|
688
|
+
records: arraySchema(MEMORY_RECORD_SCHEMA),
|
|
689
|
+
links: arraySchema(MEMORY_LINK_SCHEMA),
|
|
690
|
+
}, ['schemaVersion', 'exportedAt', 'scope', 'recordCount', 'linkCount', 'records', 'links']);
|
|
691
|
+
export const MEMORY_IMPORT_RESULT_SCHEMA = objectSchema({
|
|
692
|
+
importedRecords: NUMBER_SCHEMA,
|
|
693
|
+
skippedRecords: NUMBER_SCHEMA,
|
|
694
|
+
importedLinks: NUMBER_SCHEMA,
|
|
695
|
+
}, ['importedRecords', 'skippedRecords', 'importedLinks']);
|
|
696
|
+
export const MEMORY_RECORD_LIST_OUTPUT_SCHEMA = objectSchema({
|
|
697
|
+
records: arraySchema(MEMORY_RECORD_SCHEMA),
|
|
698
|
+
}, ['records']);
|
|
699
|
+
export const MEMORY_RECORD_SEMANTIC_OUTPUT_SCHEMA = objectSchema({
|
|
700
|
+
results: arraySchema(MEMORY_SEMANTIC_RESULT_SCHEMA),
|
|
701
|
+
}, ['results']);
|
|
702
|
+
export const MEMORY_RECORD_LINKS_OUTPUT_SCHEMA = objectSchema({
|
|
703
|
+
links: arraySchema(MEMORY_LINK_SCHEMA),
|
|
704
|
+
}, ['links']);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade-composition.d.ts","sourceRoot":"","sources":["../../../src/platform/daemon/facade-composition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AA6BvD,OAAO,KAAK,EAAE,oBAAoB,EAA0B,MAAM,wCAAwC,CAAC;AAG3G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,YAAY,CAAC;AAKpE,YAAY,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,sCAAsC,GACvC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,sCAAsC,EACvC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"facade-composition.d.ts","sourceRoot":"","sources":["../../../src/platform/daemon/facade-composition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AA6BvD,OAAO,KAAK,EAAE,oBAAoB,EAA0B,MAAM,wCAAwC,CAAC;AAG3G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,YAAY,CAAC;AAKpE,YAAY,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,sCAAsC,GACvC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,sCAAsC,EACvC,MAAM,mBAAmB,CAAC;AAkD3B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,oBAAoB,CA8HvG;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,GAAG,2BAA2B,CAwJ5F;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,sCAAsC,GAC9C,yBAAyB,CA4K3B;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE;IAC1D,QAAQ,CAAC,aAAa,EAAE,OAAO,2BAA2B,EAAE,mBAAmB,CAAC;IAChF,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,yBAAyB,EAAE,WAAW,GAAG,QAAQ,CAAC;IACzK,QAAQ,CAAC,4BAA4B,EAAE,CAAC,OAAO,EAAE,OAAO,yBAAyB,EAAE,sBAAsB,GAAG,SAAS,EAAE,KAAK,EAAE;QAC5H,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACzC,KAAK,IAAI,CAAC;CACZ,GAAG,IAAI,CAoBP"}
|
|
@@ -35,6 +35,7 @@ function ensureAgentKnowledgeService(runtimeServices) {
|
|
|
35
35
|
const store = new KnowledgeStore({
|
|
36
36
|
configManager: runtimeServices.configManager,
|
|
37
37
|
dbFileName: GOODVIBES_AGENT_KNOWLEDGE_DB_FILE,
|
|
38
|
+
family: 'agent',
|
|
38
39
|
});
|
|
39
40
|
const semanticLlm = createProviderBackedKnowledgeSemanticLlm(runtimeServices.providerRegistry, {
|
|
40
41
|
timeoutMs: 20_000,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AutomationRouteBinding } from '../automation/routes.js';
|
|
2
2
|
import type { RouteBindingManager } from '../channels/index.js';
|
|
3
3
|
import type { CompanionChatManager } from '../companion/companion-chat-manager.js';
|
|
4
|
-
import type { CompanionChatSession } from '../companion/companion-chat-types.js';
|
|
4
|
+
import type { CompanionChatSession, CompanionChatTurnEvent } from '../companion/companion-chat-types.js';
|
|
5
5
|
import type { ConfigManager } from '../config/manager.js';
|
|
6
6
|
export declare const HOME_ASSISTANT_DEFAULT_REMOTE_SESSION_TTL_MS: number;
|
|
7
7
|
type JsonRecord = Record<string, unknown>;
|
|
@@ -54,6 +54,9 @@ export declare function postHomeAssistantChatMessage(runtime: HomeAssistantChatR
|
|
|
54
54
|
readonly wait?: boolean;
|
|
55
55
|
readonly timeoutMs?: number | undefined;
|
|
56
56
|
readonly clientId?: string;
|
|
57
|
+
/** In-process tap for the turn's incremental events, forwarded to the chat
|
|
58
|
+
* manager so a caller (the SSE route) can stream deltas while awaiting the reply. */
|
|
59
|
+
readonly onTurnEvent?: ((event: CompanionChatTurnEvent) => void) | undefined;
|
|
57
60
|
}): Promise<HomeAssistantChatPostResult>;
|
|
58
61
|
export declare function resolveHomeAssistantChatSession(runtime: HomeAssistantChatRuntime, input: HomeAssistantChatInput): Promise<HomeAssistantChatResolution>;
|
|
59
62
|
export declare function readHomeAssistantRemoteSessionTtlMs(configManager: ConfigReader, value: unknown): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homeassistant-chat.d.ts","sourceRoot":"","sources":["../../../src/platform/daemon/homeassistant-chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"homeassistant-chat.d.ts","sourceRoot":"","sources":["../../../src/platform/daemon/homeassistant-chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ export async function postHomeAssistantChatMessage(runtime, input, options = {})
|
|
|
9
9
|
const messageId = await runtime.chatManager.postMessage(resolution.session.id, formatHomeAssistantUserMessage(input), clientId);
|
|
10
10
|
return { ...resolution, messageId };
|
|
11
11
|
}
|
|
12
|
-
const reply = await runtime.chatManager.postMessageAndWaitForReply(resolution.session.id, formatHomeAssistantUserMessage(input), clientId, { timeoutMs: options.timeoutMs });
|
|
12
|
+
const reply = await runtime.chatManager.postMessageAndWaitForReply(resolution.session.id, formatHomeAssistantUserMessage(input), clientId, { timeoutMs: options.timeoutMs, ...(options.onTurnEvent ? { onTurnEvent: options.onTurnEvent } : {}) });
|
|
13
13
|
return {
|
|
14
14
|
...resolution,
|
|
15
15
|
messageId: reply.messageId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homeassistant-routes.d.ts","sourceRoot":"","sources":["../../../../src/platform/daemon/http/homeassistant-routes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"homeassistant-routes.d.ts","sourceRoot":"","sources":["../../../../src/platform/daemon/http/homeassistant-routes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAW7D,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAkC1C,UAAU,yBAAyB;IACjC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,eAAe,GAAG,cAAc,CAAC,CAAC;IAC9F,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzE,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC,MAAM;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;CACvG;AAQD,qBAAa,+BAA+B;IAG9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgD;gBAEhD,OAAO,EAAE,yBAAyB;IAEzD,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA6BpD,OAAO,CAAC,cAAc;YA2BR,kBAAkB;IAuGhC,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,kBAAkB;IAmD1B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,UAAU;IAuClB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,sBAAsB;CAG/B"}
|
|
@@ -62,7 +62,7 @@ export class HomeAssistantConversationRoutes {
|
|
|
62
62
|
],
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
-
async submitConversation(body) {
|
|
65
|
+
async submitConversation(body, onTurnEvent) {
|
|
66
66
|
if (!Boolean(this.context.configManager.get('surfaces.homeassistant.enabled'))) {
|
|
67
67
|
return {
|
|
68
68
|
ok: false,
|
|
@@ -105,6 +105,7 @@ export class HomeAssistantConversationRoutes {
|
|
|
105
105
|
wait: input.wait,
|
|
106
106
|
timeoutMs: input.waitTimeoutMs,
|
|
107
107
|
clientId: `homeassistant:${input.surfaceId}:${input.conversationId}`,
|
|
108
|
+
...(onTurnEvent ? { onTurnEvent } : {}),
|
|
108
109
|
});
|
|
109
110
|
}
|
|
110
111
|
catch (error) {
|
|
@@ -168,18 +169,43 @@ export class HomeAssistantConversationRoutes {
|
|
|
168
169
|
}
|
|
169
170
|
streamConversation(body) {
|
|
170
171
|
const encoder = new TextEncoder();
|
|
172
|
+
const conversationId = readString(body.conversationId ?? body.conversation_id);
|
|
173
|
+
const messageId = readString(body.messageId ?? body.message_id);
|
|
171
174
|
const stream = new ReadableStream({
|
|
172
175
|
start: async (controller) => {
|
|
176
|
+
let closed = false;
|
|
173
177
|
const send = (event, data) => {
|
|
178
|
+
if (closed)
|
|
179
|
+
return;
|
|
174
180
|
controller.enqueue(encoder.encode(`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`));
|
|
175
181
|
};
|
|
182
|
+
// Bridge the platform's per-turn streaming events into incremental SSE
|
|
183
|
+
// `delta` frames as the model produces text. The terminal `final`/`error`
|
|
184
|
+
// frame contract below is unchanged, so older consumers that ignore
|
|
185
|
+
// `delta` events still see exactly one terminal frame.
|
|
186
|
+
let accumulated = '';
|
|
187
|
+
const onTurnEvent = (event) => {
|
|
188
|
+
if (event.type === 'turn.delta' && event.delta) {
|
|
189
|
+
accumulated += event.delta;
|
|
190
|
+
send('delta', {
|
|
191
|
+
ok: true,
|
|
192
|
+
delta: event.delta,
|
|
193
|
+
text: accumulated,
|
|
194
|
+
turnId: event.turnId,
|
|
195
|
+
...(conversationId ? { conversationId } : {}),
|
|
196
|
+
...(messageId ? { messageId } : {}),
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
};
|
|
176
200
|
try {
|
|
177
|
-
const result = await this.submitConversation({ ...body, wait: true });
|
|
201
|
+
const result = await this.submitConversation({ ...body, wait: true }, onTurnEvent);
|
|
178
202
|
send(result.status === 'completed' ? 'final' : 'error', result);
|
|
203
|
+
closed = true;
|
|
179
204
|
controller.close();
|
|
180
205
|
}
|
|
181
206
|
catch (error) {
|
|
182
207
|
send('error', { ok: false, error: error instanceof Error ? error.message : String(error) });
|
|
208
|
+
closed = true;
|
|
183
209
|
controller.close();
|
|
184
210
|
}
|
|
185
211
|
},
|
|
@@ -17,6 +17,14 @@ export declare class WebhookNotifier {
|
|
|
17
17
|
private readonly maxConcurrent;
|
|
18
18
|
private readonly maxBodyBytes;
|
|
19
19
|
private readonly signingSecret?;
|
|
20
|
+
/**
|
|
21
|
+
* Bypass test suppression for every delivery from this instance. Intended
|
|
22
|
+
* only for tests that specifically exercise the real HTTP delivery layer
|
|
23
|
+
* (e.g. the SSRF filter tests, which need a real `fetch` attempt to
|
|
24
|
+
* distinguish "blocked" from "not blocked"). Every other caller should
|
|
25
|
+
* leave this unset so `bun test` never fires a real webhook.
|
|
26
|
+
*/
|
|
27
|
+
private readonly force;
|
|
20
28
|
constructor(urls?: string[], options?: WebhookNotifierOptions);
|
|
21
29
|
/**
|
|
22
30
|
* Create a WebhookNotifier from a list of URLs (e.g. from persisted config).
|
|
@@ -55,6 +63,13 @@ export interface WebhookNotifierOptions {
|
|
|
55
63
|
maxConcurrent?: number | undefined;
|
|
56
64
|
maxBodyBytes?: number | undefined;
|
|
57
65
|
signingSecret?: string | Uint8Array | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Bypass test suppression for every delivery from this instance. Only
|
|
68
|
+
* tests that exercise the real HTTP delivery layer itself should set this
|
|
69
|
+
* — everything else should be left unset so `bun test` never sends a real
|
|
70
|
+
* webhook request.
|
|
71
|
+
*/
|
|
72
|
+
force?: boolean | undefined;
|
|
58
73
|
}
|
|
59
74
|
export interface WebhookNotifierDeliveryResult {
|
|
60
75
|
readonly url: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../../src/platform/integrations/webhooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAA6B,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../../src/platform/integrations/webhooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAA6B,MAAM,4BAA4B,CAAC;AAS7F;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAkC;IACjE;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;gBAEpB,IAAI,GAAE,MAAM,EAAO,EAAE,OAAO,GAAE,sBAA2B;IASrE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe;IAQlD,oEAAoE;IACpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQzB,4BAA4B;IAC5B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ/B,gCAAgC;IAChC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAI7B,iDAAiD;IACjD,OAAO,IAAI,MAAM,EAAE;IAInB,sDAAsD;IACtD,YAAY,IAAI,OAAO;IAQvB;;;;;;OAMG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA4B5D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,6BAA6B,EAAE,CAAC;IAoBtD,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IA8B9C,wCAAwC;IACxC,MAAM,IAAI,IAAI;YAWA,OAAO;IAmDrB,OAAO,CAAC,uBAAuB;CAOhC;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAChD;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,6BAA6B,EAAE,CAAC;CAC5D"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { logger } from '../utils/logger.js';
|
|
2
2
|
import { classifyHostTrustTier, extractHostname, emitSsrfDeny } from '../tools/fetch/trust-tiers.js';
|
|
3
3
|
import { instrumentedFetch, createTimeoutController } from '../utils/fetch-with-timeout.js';
|
|
4
|
+
import { isNotifySuppressed } from '../utils/notify.js';
|
|
4
5
|
// ---------------------------------------------------------------------------
|
|
5
6
|
// WebhookNotifier
|
|
6
7
|
// ---------------------------------------------------------------------------
|
|
@@ -22,12 +23,21 @@ export class WebhookNotifier {
|
|
|
22
23
|
maxConcurrent;
|
|
23
24
|
maxBodyBytes;
|
|
24
25
|
signingSecret;
|
|
26
|
+
/**
|
|
27
|
+
* Bypass test suppression for every delivery from this instance. Intended
|
|
28
|
+
* only for tests that specifically exercise the real HTTP delivery layer
|
|
29
|
+
* (e.g. the SSRF filter tests, which need a real `fetch` attempt to
|
|
30
|
+
* distinguish "blocked" from "not blocked"). Every other caller should
|
|
31
|
+
* leave this unset so `bun test` never fires a real webhook.
|
|
32
|
+
*/
|
|
33
|
+
force;
|
|
25
34
|
constructor(urls = [], options = {}) {
|
|
26
35
|
this.urls = validateWebhookUrls(urls);
|
|
27
36
|
this.timeoutMs = normalizeWebhookTimeoutMs(options.timeoutMs);
|
|
28
37
|
this.maxConcurrent = normalizePositiveInteger(options.maxConcurrent, 8, 1, 32);
|
|
29
38
|
this.maxBodyBytes = normalizePositiveInteger(options.maxBodyBytes, 64 * 1024, 1_024, 256 * 1024);
|
|
30
39
|
this.signingSecret = normalizeSigningSecret(options.signingSecret);
|
|
40
|
+
this.force = options.force === true;
|
|
31
41
|
}
|
|
32
42
|
/**
|
|
33
43
|
* Create a WebhookNotifier from a list of URLs (e.g. from persisted config).
|
|
@@ -159,6 +169,14 @@ export class WebhookNotifier {
|
|
|
159
169
|
throw new Error(`WebhookNotifier: blocked URL — ${trustResult.reason}`);
|
|
160
170
|
}
|
|
161
171
|
}
|
|
172
|
+
// Real webhook delivery must never fire from an automated test run —
|
|
173
|
+
// suppressed the same way as desktop notifications (NODE_ENV==='test' or
|
|
174
|
+
// GOODVIBES_SUPPRESS_NOTIFY), with `force` as the sanctioned opt-back-in
|
|
175
|
+
// for tests that exercise this delivery layer itself.
|
|
176
|
+
if (isNotifySuppressed(this.force)) {
|
|
177
|
+
logger.debug('WebhookNotifier: delivery suppressed under test', { url });
|
|
178
|
+
throw new Error('WebhookNotifier: delivery suppressed under test (pass { force: true } to enable)');
|
|
179
|
+
}
|
|
162
180
|
const signal = createTimeoutController(this.timeoutMs);
|
|
163
181
|
try {
|
|
164
182
|
const body = truncateUtf8(text, this.maxBodyBytes);
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import type { KnowledgeExtractionRecord } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The current extractor generation. Stamped onto every extraction's metadata at
|
|
4
|
+
* write time (`extractorVersion`). Bump this when the extraction pipeline improves
|
|
5
|
+
* so that the retained raw-artifact lake is re-processed: an extraction produced by
|
|
6
|
+
* an older generation is treated as stale-by-version and re-extracted from its
|
|
7
|
+
* stored artifact, even when its prior text was non-empty. This is what turns the
|
|
8
|
+
* retained lake into a compounding asset. Extractions written before versioning
|
|
9
|
+
* carry no stamp and resolve to version 0, so they re-extract once.
|
|
10
|
+
*/
|
|
11
|
+
export declare const KNOWLEDGE_EXTRACTOR_VERSION = 1;
|
|
12
|
+
export declare function readKnowledgeExtractorVersion(metadata: Record<string, unknown>): number;
|
|
2
13
|
export declare const KNOWLEDGE_MAX_STRUCTURE_SEARCH_TEXT_CHARS: number;
|
|
3
14
|
export declare const KNOWLEDGE_MIN_BINARY_SAMPLE_CHARS = 120;
|
|
4
15
|
export declare const KNOWLEDGE_BINARY_SAMPLE_CHARS = 4096;
|
|
@@ -6,7 +17,7 @@ export declare const KNOWLEDGE_BINARY_EXTENDED_RATIO_THRESHOLD = 0.18;
|
|
|
6
17
|
export declare const KNOWLEDGE_BINARY_USEFUL_RATIO_THRESHOLD = 0.78;
|
|
7
18
|
export declare const KNOWLEDGE_BINARY_PUNCTUATION_RATIO_THRESHOLD = 0.42;
|
|
8
19
|
export declare const KNOWLEDGE_BINARY_WHITESPACE_RATIO_THRESHOLD = 0.08;
|
|
9
|
-
export declare function knowledgeExtractionNeedsRefresh(extraction: KnowledgeExtractionRecord | null): boolean;
|
|
20
|
+
export declare function knowledgeExtractionNeedsRefresh(extraction: KnowledgeExtractionRecord | null, currentExtractorVersion?: number): boolean;
|
|
10
21
|
export declare function readKnowledgeSearchText(record: Record<string, unknown>): string | undefined;
|
|
11
22
|
export declare function hasUsefulKnowledgeExtractionText(value: string | undefined): boolean;
|
|
12
23
|
export declare function looksLikeRawPdfPayload(value: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extraction-policy.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/extraction-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,eAAO,MAAM,yCAAyC,QAAa,CAAC;AAEpE,eAAO,MAAM,iCAAiC,MAAM,CAAC;AACrD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AACnD,eAAO,MAAM,yCAAyC,OAAO,CAAC;AAC9D,eAAO,MAAM,uCAAuC,OAAO,CAAC;AAC5D,eAAO,MAAM,4CAA4C,OAAO,CAAC;AACjE,eAAO,MAAM,2CAA2C,OAAO,CAAC;AAShE,wBAAgB,+BAA+B,
|
|
1
|
+
{"version":3,"file":"extraction-policy.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/extraction-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAGvF;AAED,eAAO,MAAM,yCAAyC,QAAa,CAAC;AAEpE,eAAO,MAAM,iCAAiC,MAAM,CAAC;AACrD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AACnD,eAAO,MAAM,yCAAyC,OAAO,CAAC;AAC9D,eAAO,MAAM,uCAAuC,OAAO,CAAC;AAC5D,eAAO,MAAM,4CAA4C,OAAO,CAAC;AACjE,eAAO,MAAM,2CAA2C,OAAO,CAAC;AAShE,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,yBAAyB,GAAG,IAAI,EAC5C,uBAAuB,GAAE,MAAoC,GAC5D,OAAO,CAeT;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAG3F;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAKnF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CA6B1D"}
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The current extractor generation. Stamped onto every extraction's metadata at
|
|
3
|
+
* write time (`extractorVersion`). Bump this when the extraction pipeline improves
|
|
4
|
+
* so that the retained raw-artifact lake is re-processed: an extraction produced by
|
|
5
|
+
* an older generation is treated as stale-by-version and re-extracted from its
|
|
6
|
+
* stored artifact, even when its prior text was non-empty. This is what turns the
|
|
7
|
+
* retained lake into a compounding asset. Extractions written before versioning
|
|
8
|
+
* carry no stamp and resolve to version 0, so they re-extract once.
|
|
9
|
+
*/
|
|
10
|
+
export const KNOWLEDGE_EXTRACTOR_VERSION = 1;
|
|
11
|
+
export function readKnowledgeExtractorVersion(metadata) {
|
|
12
|
+
const value = metadata.extractorVersion;
|
|
13
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : 0;
|
|
14
|
+
}
|
|
1
15
|
export const KNOWLEDGE_MAX_STRUCTURE_SEARCH_TEXT_CHARS = 128 * 1024;
|
|
2
16
|
export const KNOWLEDGE_MIN_BINARY_SAMPLE_CHARS = 120;
|
|
3
17
|
export const KNOWLEDGE_BINARY_SAMPLE_CHARS = 4_096;
|
|
@@ -11,9 +25,13 @@ const LIMITED_EXTRACTION_MARKERS = [
|
|
|
11
25
|
'no specialized extractor matched',
|
|
12
26
|
'has no specialized in-core extractor',
|
|
13
27
|
];
|
|
14
|
-
export function knowledgeExtractionNeedsRefresh(extraction) {
|
|
28
|
+
export function knowledgeExtractionNeedsRefresh(extraction, currentExtractorVersion = KNOWLEDGE_EXTRACTOR_VERSION) {
|
|
15
29
|
if (!extraction)
|
|
16
30
|
return true;
|
|
31
|
+
// Improved-extractor gate: re-extract a stored capture when it was produced by
|
|
32
|
+
// an older extractor generation, even if its prior text was usable.
|
|
33
|
+
if (readKnowledgeExtractorVersion(extraction.metadata) < currentExtractorVersion)
|
|
34
|
+
return true;
|
|
17
35
|
const searchText = readKnowledgeSearchText(extraction.structure) ?? readKnowledgeSearchText(extraction.metadata);
|
|
18
36
|
if (searchText)
|
|
19
37
|
return false;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { buildSchema, type DocumentNode, type ValueNode } from 'graphql';
|
|
2
2
|
import type { KnowledgePacketDetail, KnowledgeProjectionTargetKind } from './types.js';
|
|
3
|
-
export declare const KNOWLEDGE_GRAPHQL_SDL = "\n scalar JSON\n\n enum KnowledgeProjectionKind {\n OVERVIEW\n BUNDLE\n SOURCE\n NODE\n ISSUE\n DASHBOARD\n ROLLUP\n }\n\n enum KnowledgePacketDetail {\n COMPACT\n STANDARD\n DETAILED\n }\n\n enum KnowledgeJobMode {\n INLINE\n BACKGROUND\n }\n\n type KnowledgeStatus {\n ready: Boolean!\n storagePath: String!\n sourceCount: Int!\n nodeCount: Int!\n edgeCount: Int!\n issueCount: Int!\n extractionCount: Int!\n jobRunCount: Int!\n usageCount: Int!\n candidateCount: Int!\n reportCount: Int!\n scheduleCount: Int!\n note: String!\n }\n\n type KnowledgeConnectorSetupField {\n key: String!\n label: String!\n kind: String!\n optional: Boolean\n source: String\n description: String\n }\n\n type KnowledgeConnectorSetup {\n version: String!\n summary: String!\n transportHints: [String!]!\n steps: [String!]!\n fields: [KnowledgeConnectorSetupField!]!\n metadata: JSON\n }\n\n type KnowledgeConnectorDoctorCheck {\n id: String!\n label: String!\n status: String!\n detail: String!\n metadata: JSON\n }\n\n type KnowledgeConnectorDoctorReport {\n connectorId: String!\n ready: Boolean!\n summary: String!\n checks: [KnowledgeConnectorDoctorCheck!]!\n hints: [String!]!\n metadata: JSON\n }\n\n type KnowledgeConnector {\n id: String!\n displayName: String\n version: String\n description: String!\n sourceType: String!\n inputSchema: JSON\n examples: [JSON!]!\n capabilities: [String!]!\n setup: KnowledgeConnectorSetup\n metadata: JSON\n }\n\n type KnowledgeSource {\n id: String!\n connectorId: String!\n sourceType: String!\n title: String\n sourceUri: String\n canonicalUri: String\n summary: String\n description: String\n tags: [String!]!\n folderPath: String\n status: String!\n artifactId: String\n contentHash: String\n lastCrawledAt: Float\n crawlError: String\n sessionId: String\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeNode {\n id: String!\n kind: String!\n slug: String!\n title: String!\n summary: String\n aliases: [String!]!\n status: String!\n confidence: Int!\n sourceId: String\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeEdge {\n id: String!\n fromKind: String!\n fromId: String!\n toKind: String!\n toId: String!\n relation: String!\n weight: Float!\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeIssue {\n id: String!\n severity: String!\n code: String!\n message: String!\n status: String!\n sourceId: String\n nodeId: String\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeExtraction {\n id: String!\n sourceId: String!\n artifactId: String\n extractorId: String!\n format: String!\n title: String\n summary: String\n excerpt: String\n sections: [String!]!\n links: [String!]!\n estimatedTokens: Int!\n structure: JSON\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeItemView {\n source: KnowledgeSource\n node: KnowledgeNode\n issue: KnowledgeIssue\n relatedEdges: [KnowledgeEdge!]!\n linkedSources: [KnowledgeSource!]!\n linkedNodes: [KnowledgeNode!]!\n }\n\n type KnowledgeSearchResult {\n kind: String!\n id: String!\n score: Float!\n reason: String!\n source: KnowledgeSource\n node: KnowledgeNode\n }\n\n type KnowledgePacketItem {\n kind: String!\n id: String!\n title: String!\n summary: String\n uri: String\n reason: String!\n score: Float!\n estimatedTokens: Int!\n related: [String!]!\n evidence: [String!]!\n metadata: JSON\n }\n\n type KnowledgePacket {\n task: String!\n writeScope: [String!]!\n generatedAt: Float!\n detail: KnowledgePacketDetail!\n strategy: String!\n budgetLimit: Int!\n estimatedTokens: Int!\n items: [KnowledgePacketItem!]!\n }\n\n type KnowledgeProjectionTarget {\n targetId: String!\n kind: KnowledgeProjectionKind!\n title: String!\n description: String!\n itemId: String\n defaultPath: String!\n defaultFilename: String!\n metadata: JSON\n }\n\n type KnowledgeProjectionPage {\n path: String!\n title: String!\n format: String!\n content: String!\n itemIds: [String!]!\n metadata: JSON\n }\n\n type KnowledgeProjectionBundle {\n id: String!\n target: KnowledgeProjectionTarget!\n generatedAt: Float!\n pageCount: Int!\n pages: [KnowledgeProjectionPage!]!\n metadata: JSON\n }\n\n type ArtifactDescriptor {\n id: String!\n kind: String!\n mimeType: String!\n filename: String\n sizeBytes: Int!\n sourceUri: String\n createdAt: Float!\n metadata: JSON\n }\n\n type KnowledgeJob {\n id: String!\n label: String!\n description: String!\n defaultMode: KnowledgeJobMode!\n triggerKinds: [String!]!\n lastRunAt: Float\n metadata: JSON\n }\n\n type KnowledgeJobRun {\n id: String!\n jobId: String!\n status: String!\n mode: KnowledgeJobMode!\n requestedAt: Float!\n startedAt: Float\n completedAt: Float\n error: String\n result: JSON\n metadata: JSON\n }\n\n type KnowledgeBatchIngestResult {\n imported: Int!\n failed: Int!\n sources: [KnowledgeSource!]!\n errors: [String!]!\n }\n\n type KnowledgeUsageRecord {\n id: String!\n targetKind: String!\n targetId: String!\n usageKind: String!\n task: String\n sessionId: String\n score: Float\n metadata: JSON\n createdAt: Float!\n }\n\n type KnowledgeConsolidationCandidate {\n id: String!\n candidateType: String!\n status: String!\n subjectKind: String!\n subjectId: String!\n title: String!\n summary: String\n score: Float!\n evidence: [String!]!\n suggestedMemoryClass: String\n suggestedScope: String\n decidedAt: Float\n decidedBy: String\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeConsolidationReport {\n id: String!\n kind: String!\n title: String!\n summary: String!\n highlights: [String!]!\n metrics: JSON\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeSchedule {\n id: String!\n jobId: String!\n label: String!\n enabled: Boolean!\n schedule: JSON!\n lastRunAt: Float\n nextRunAt: Float\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n input KnowledgeJobRunInput {\n mode: KnowledgeJobMode\n }\n\n input KnowledgePacketInput {\n task: String!\n writeScope: [String!]\n limit: Int\n detail: KnowledgePacketDetail\n budgetLimit: Int\n knowledgeSpaceId: String\n includeAllSpaces: Boolean\n }\n\n type Query {\n status(knowledgeSpaceId: String, includeAllSpaces: Boolean): KnowledgeStatus!\n connectors: [KnowledgeConnector!]!\n connectorDoctor(id: String!): KnowledgeConnectorDoctorReport\n sources(limit: Int, offset: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeSource!]!\n nodes(limit: Int, offset: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeNode!]!\n issues(limit: Int, offset: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeIssue!]!\n itemView(kind: String!, id: String!): KnowledgeItemView\n extractions(limit: Int, sourceId: String, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeExtraction!]!\n neighbors(kind: String!, id: String!, relation: String, limit: Int): [KnowledgeEdge!]!\n search(query: String!, limit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeSearchResult!]!\n packet(task: String!, writeScope: [String!], limit: Int, detail: KnowledgePacketDetail, budgetLimit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): KnowledgePacket!\n projectionTargets(limit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeProjectionTarget!]!\n projection(kind: KnowledgeProjectionKind!, id: String, limit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): KnowledgeProjectionBundle!\n jobs: [KnowledgeJob!]!\n job(id: String!): KnowledgeJob\n jobRuns(limit: Int, jobId: String): [KnowledgeJobRun!]!\n usage(limit: Int, targetKind: String, targetId: String, usageKind: String): [KnowledgeUsageRecord!]!\n usageRecords(limit: Int, targetKind: String, targetId: String, usageKind: String): [KnowledgeUsageRecord!]!\n consolidationCandidates(limit: Int, status: String): [KnowledgeConsolidationCandidate!]!\n consolidationReports(limit: Int): [KnowledgeConsolidationReport!]!\n schedules(limit: Int): [KnowledgeSchedule!]!\n sourceExtraction(sourceId: String!): KnowledgeExtraction\n }\n\n type Mutation {\n ingestUrl(url: String!, sourceType: String, connectorId: String, folderPath: String, tags: [String!], sessionId: String, allowPrivateHosts: Boolean): KnowledgeSource!\n ingestArtifact(path: String!, connectorId: String, tags: [String!], sessionId: String, allowPrivateHosts: Boolean): KnowledgeSource!\n importBookmarksFromFile(path: String!, sessionId: String, allowPrivateHosts: Boolean): KnowledgeBatchIngestResult!\n importUrlsFromFile(path: String!, sessionId: String, allowPrivateHosts: Boolean): KnowledgeBatchIngestResult!\n ingestBookmarkSeeds(seeds: [String!]!, connectorId: String, sessionId: String): KnowledgeBatchIngestResult!\n ingestWithConnector(connectorId: String!, input: String!, sessionId: String, allowPrivateHosts: Boolean): KnowledgeBatchIngestResult!\n ingestConnectorInput(input: String!, connectorId: String, sessionId: String, allowPrivateHosts: Boolean): KnowledgeBatchIngestResult!\n renderProjection(kind: KnowledgeProjectionKind!, id: String, limit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): KnowledgeProjectionBundle!\n materializeProjection(kind: KnowledgeProjectionKind!, id: String, limit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): KnowledgeMaterializedProjection!\n reindex: KnowledgeStatus!\n runJob(id: String!, mode: KnowledgeJobMode): KnowledgeJobRun!\n saveSchedule(id: String, jobId: String!, label: String!, enabled: Boolean!, schedule: JSON!, metadata: JSON): KnowledgeSchedule!\n deleteSchedule(id: String!): Boolean!\n setScheduleEnabled(id: String!, enabled: Boolean!): KnowledgeSchedule\n decideConsolidationCandidate(id: String!, status: String!, decidedBy: String): KnowledgeConsolidationCandidate!\n lint: [KnowledgeIssue!]!\n }\n\n type KnowledgeMaterializedProjection {\n artifact: ArtifactDescriptor!\n bundle: KnowledgeProjectionBundle!\n }\n";
|
|
3
|
+
export declare const KNOWLEDGE_GRAPHQL_SDL = "\n scalar JSON\n\n enum KnowledgeProjectionKind {\n OVERVIEW\n BUNDLE\n SOURCE\n NODE\n ISSUE\n DASHBOARD\n ROLLUP\n }\n\n enum KnowledgePacketDetail {\n COMPACT\n STANDARD\n DETAILED\n }\n\n enum KnowledgeJobMode {\n INLINE\n BACKGROUND\n }\n\n type KnowledgeStatus {\n ready: Boolean!\n storagePath: String!\n sourceCount: Int!\n nodeCount: Int!\n edgeCount: Int!\n issueCount: Int!\n extractionCount: Int!\n jobRunCount: Int!\n usageCount: Int!\n candidateCount: Int!\n reportCount: Int!\n scheduleCount: Int!\n note: String!\n }\n\n type KnowledgeConnectorSetupField {\n key: String!\n label: String!\n kind: String!\n optional: Boolean\n source: String\n description: String\n }\n\n type KnowledgeConnectorSetup {\n version: String!\n summary: String!\n transportHints: [String!]!\n steps: [String!]!\n fields: [KnowledgeConnectorSetupField!]!\n metadata: JSON\n }\n\n type KnowledgeConnectorDoctorCheck {\n id: String!\n label: String!\n status: String!\n detail: String!\n metadata: JSON\n }\n\n type KnowledgeConnectorDoctorReport {\n connectorId: String!\n ready: Boolean!\n summary: String!\n checks: [KnowledgeConnectorDoctorCheck!]!\n hints: [String!]!\n metadata: JSON\n }\n\n type KnowledgeConnector {\n id: String!\n displayName: String\n version: String\n description: String!\n sourceType: String!\n inputSchema: JSON\n examples: [JSON!]!\n capabilities: [String!]!\n setup: KnowledgeConnectorSetup\n metadata: JSON\n }\n\n type KnowledgeSource {\n id: String!\n connectorId: String!\n sourceType: String!\n title: String\n sourceUri: String\n canonicalUri: String\n summary: String\n description: String\n tags: [String!]!\n folderPath: String\n status: String!\n artifactId: String\n contentHash: String\n lastCrawledAt: Float\n crawlError: String\n sessionId: String\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeNode {\n id: String!\n kind: String!\n slug: String!\n title: String!\n summary: String\n aliases: [String!]!\n status: String!\n confidence: Int!\n sourceId: String\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeEdge {\n id: String!\n fromKind: String!\n fromId: String!\n toKind: String!\n toId: String!\n relation: String!\n weight: Float!\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeIssue {\n id: String!\n severity: String!\n code: String!\n message: String!\n status: String!\n sourceId: String\n nodeId: String\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeExtraction {\n id: String!\n sourceId: String!\n artifactId: String\n extractorId: String!\n format: String!\n title: String\n summary: String\n excerpt: String\n sections: [String!]!\n links: [String!]!\n estimatedTokens: Int!\n structure: JSON\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeItemView {\n source: KnowledgeSource\n node: KnowledgeNode\n issue: KnowledgeIssue\n relatedEdges: [KnowledgeEdge!]!\n linkedSources: [KnowledgeSource!]!\n linkedNodes: [KnowledgeNode!]!\n }\n\n type KnowledgeSearchResult {\n kind: String!\n id: String!\n score: Float!\n reason: String!\n source: KnowledgeSource\n node: KnowledgeNode\n }\n\n type KnowledgePacketItem {\n kind: String!\n id: String!\n title: String!\n summary: String\n uri: String\n reason: String!\n score: Float!\n estimatedTokens: Int!\n related: [String!]!\n evidence: [String!]!\n metadata: JSON\n }\n\n type KnowledgePacket {\n task: String!\n writeScope: [String!]!\n generatedAt: Float!\n detail: KnowledgePacketDetail!\n strategy: String!\n budgetLimit: Int!\n estimatedTokens: Int!\n truncated: Boolean!\n totalCandidates: Int!\n droppedCount: Int!\n droppedForBudget: Int!\n budgetExhausted: Boolean!\n items: [KnowledgePacketItem!]!\n }\n\n type KnowledgeProjectionTarget {\n targetId: String!\n kind: KnowledgeProjectionKind!\n title: String!\n description: String!\n itemId: String\n defaultPath: String!\n defaultFilename: String!\n metadata: JSON\n }\n\n type KnowledgeProjectionPage {\n path: String!\n title: String!\n format: String!\n content: String!\n itemIds: [String!]!\n metadata: JSON\n }\n\n type KnowledgeProjectionBundle {\n id: String!\n target: KnowledgeProjectionTarget!\n generatedAt: Float!\n pageCount: Int!\n pages: [KnowledgeProjectionPage!]!\n metadata: JSON\n }\n\n type ArtifactDescriptor {\n id: String!\n kind: String!\n mimeType: String!\n filename: String\n sizeBytes: Int!\n sourceUri: String\n createdAt: Float!\n metadata: JSON\n }\n\n type KnowledgeJob {\n id: String!\n label: String!\n description: String!\n defaultMode: KnowledgeJobMode!\n triggerKinds: [String!]!\n lastRunAt: Float\n metadata: JSON\n }\n\n type KnowledgeJobRun {\n id: String!\n jobId: String!\n status: String!\n mode: KnowledgeJobMode!\n requestedAt: Float!\n startedAt: Float\n completedAt: Float\n error: String\n result: JSON\n metadata: JSON\n }\n\n type KnowledgeBatchIngestResult {\n imported: Int!\n failed: Int!\n sources: [KnowledgeSource!]!\n errors: [String!]!\n }\n\n type KnowledgeUsageRecord {\n id: String!\n targetKind: String!\n targetId: String!\n usageKind: String!\n task: String\n sessionId: String\n score: Float\n metadata: JSON\n createdAt: Float!\n }\n\n type KnowledgeConsolidationCandidate {\n id: String!\n candidateType: String!\n status: String!\n subjectKind: String!\n subjectId: String!\n title: String!\n summary: String\n score: Float!\n evidence: [String!]!\n suggestedMemoryClass: String\n suggestedScope: String\n decidedAt: Float\n decidedBy: String\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeConsolidationReport {\n id: String!\n kind: String!\n title: String!\n summary: String!\n highlights: [String!]!\n metrics: JSON\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n type KnowledgeSchedule {\n id: String!\n jobId: String!\n label: String!\n enabled: Boolean!\n schedule: JSON!\n lastRunAt: Float\n nextRunAt: Float\n metadata: JSON\n createdAt: Float!\n updatedAt: Float!\n }\n\n input KnowledgeJobRunInput {\n mode: KnowledgeJobMode\n }\n\n input KnowledgePacketInput {\n task: String!\n writeScope: [String!]\n limit: Int\n detail: KnowledgePacketDetail\n budgetLimit: Int\n knowledgeSpaceId: String\n includeAllSpaces: Boolean\n }\n\n type Query {\n status(knowledgeSpaceId: String, includeAllSpaces: Boolean): KnowledgeStatus!\n connectors: [KnowledgeConnector!]!\n connectorDoctor(id: String!): KnowledgeConnectorDoctorReport\n sources(limit: Int, offset: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeSource!]!\n nodes(limit: Int, offset: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeNode!]!\n issues(limit: Int, offset: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeIssue!]!\n itemView(kind: String!, id: String!): KnowledgeItemView\n extractions(limit: Int, sourceId: String, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeExtraction!]!\n neighbors(kind: String!, id: String!, relation: String, limit: Int): [KnowledgeEdge!]!\n search(query: String!, limit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeSearchResult!]!\n packet(task: String!, writeScope: [String!], limit: Int, detail: KnowledgePacketDetail, budgetLimit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): KnowledgePacket!\n projectionTargets(limit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): [KnowledgeProjectionTarget!]!\n projection(kind: KnowledgeProjectionKind!, id: String, limit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): KnowledgeProjectionBundle!\n jobs: [KnowledgeJob!]!\n job(id: String!): KnowledgeJob\n jobRuns(limit: Int, jobId: String): [KnowledgeJobRun!]!\n usage(limit: Int, targetKind: String, targetId: String, usageKind: String): [KnowledgeUsageRecord!]!\n usageRecords(limit: Int, targetKind: String, targetId: String, usageKind: String): [KnowledgeUsageRecord!]!\n consolidationCandidates(limit: Int, status: String): [KnowledgeConsolidationCandidate!]!\n consolidationReports(limit: Int): [KnowledgeConsolidationReport!]!\n schedules(limit: Int): [KnowledgeSchedule!]!\n sourceExtraction(sourceId: String!): KnowledgeExtraction\n }\n\n type Mutation {\n ingestUrl(url: String!, sourceType: String, connectorId: String, folderPath: String, tags: [String!], sessionId: String, allowPrivateHosts: Boolean): KnowledgeSource!\n ingestArtifact(path: String!, connectorId: String, tags: [String!], sessionId: String, allowPrivateHosts: Boolean): KnowledgeSource!\n importBookmarksFromFile(path: String!, sessionId: String, allowPrivateHosts: Boolean): KnowledgeBatchIngestResult!\n importUrlsFromFile(path: String!, sessionId: String, allowPrivateHosts: Boolean): KnowledgeBatchIngestResult!\n ingestBookmarkSeeds(seeds: [String!]!, connectorId: String, sessionId: String): KnowledgeBatchIngestResult!\n ingestWithConnector(connectorId: String!, input: String!, sessionId: String, allowPrivateHosts: Boolean): KnowledgeBatchIngestResult!\n ingestConnectorInput(input: String!, connectorId: String, sessionId: String, allowPrivateHosts: Boolean): KnowledgeBatchIngestResult!\n renderProjection(kind: KnowledgeProjectionKind!, id: String, limit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): KnowledgeProjectionBundle!\n materializeProjection(kind: KnowledgeProjectionKind!, id: String, limit: Int, knowledgeSpaceId: String, includeAllSpaces: Boolean): KnowledgeMaterializedProjection!\n reindex: KnowledgeStatus!\n runJob(id: String!, mode: KnowledgeJobMode): KnowledgeJobRun!\n saveSchedule(id: String, jobId: String!, label: String!, enabled: Boolean!, schedule: JSON!, metadata: JSON): KnowledgeSchedule!\n deleteSchedule(id: String!): Boolean!\n setScheduleEnabled(id: String!, enabled: Boolean!): KnowledgeSchedule\n decideConsolidationCandidate(id: String!, status: String!, decidedBy: String): KnowledgeConsolidationCandidate!\n lint: [KnowledgeIssue!]!\n }\n\n type KnowledgeMaterializedProjection {\n artifact: ArtifactDescriptor!\n bundle: KnowledgeProjectionBundle!\n }\n";
|
|
4
4
|
export declare function parseJsonAst(node: ValueNode): unknown;
|
|
5
5
|
export declare function installJsonScalar(schema: ReturnType<typeof buildSchema>): void;
|
|
6
6
|
export declare function toProjectionKind(value: string): KnowledgeProjectionTargetKind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-schema.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/graphql-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAEvF,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"graphql-schema.d.ts","sourceRoot":"","sources":["../../../src/platform/knowledge/graphql-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,WAAW,EACX,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAEvF,eAAO,MAAM,qBAAqB,izVAqZjC,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAoBrD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAQ9E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,6BAA6B,CAuB7E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAiBlE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,qBAAqB,CAM/E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEpE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAE5E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE/D;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAKhG;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAKnJ;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAK1F;AAED,wBAAgB,MAAM,CAAC,CAAC,SAAS;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAK9F;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAKnF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAEpE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CASlG"}
|
|
@@ -208,6 +208,11 @@ export const KNOWLEDGE_GRAPHQL_SDL = `
|
|
|
208
208
|
strategy: String!
|
|
209
209
|
budgetLimit: Int!
|
|
210
210
|
estimatedTokens: Int!
|
|
211
|
+
truncated: Boolean!
|
|
212
|
+
totalCandidates: Int!
|
|
213
|
+
droppedCount: Int!
|
|
214
|
+
droppedForBudget: Int!
|
|
215
|
+
budgetExhausted: Boolean!
|
|
211
216
|
items: [KnowledgePacketItem!]!
|
|
212
217
|
}
|
|
213
218
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platform/knowledge/home-graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platform/knowledge/home-graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAKhE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,6BAA6B,EAC7B,eAAe,EACf,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,8BAA8B,EAC9B,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export { HomeGraphService } from './service.js';
|
|
2
2
|
export { HOME_GRAPH_KNOWLEDGE_EXTENSION } from './extension.js';
|
|
3
|
+
// Home Graph issue triage is reached through `HomeGraphService.runRefinement({ triage })`
|
|
4
|
+
// and the `refinement/run` HTTP verb; `./triage.js` stays an internal module so the
|
|
5
|
+
// public `./platform/knowledge/home-graph` subpath surface (and its size budget) is
|
|
6
|
+
// unchanged. Import the loop/types directly from './triage.js' inside the platform.
|
|
3
7
|
export { HOME_GRAPH_NODE_KINDS, HOME_GRAPH_RELATIONS, } from './types.js';
|