kiokuko 1.0.41 → 1.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.ja.md +21 -159
  2. package/README.ko.md +21 -125
  3. package/README.md +21 -194
  4. package/README.zh-CN.md +21 -126
  5. package/dist/agent-file/atomic-write.d.ts.map +1 -1
  6. package/dist/agent-file/atomic-write.js +2 -1
  7. package/dist/agent-file/atomic-write.js.map +1 -1
  8. package/dist/akinator/agent-task.d.ts +4 -2
  9. package/dist/akinator/agent-task.d.ts.map +1 -1
  10. package/dist/akinator/agent-task.js +14 -4
  11. package/dist/akinator/agent-task.js.map +1 -1
  12. package/dist/akinator/preparation-recovery.d.ts.map +1 -1
  13. package/dist/assurance/inspect.d.ts +1 -1
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/cli.js +64 -7
  16. package/dist/cli.js.map +1 -1
  17. package/dist/commands/agent.d.ts.map +1 -1
  18. package/dist/commands/agent.js +15 -3
  19. package/dist/commands/agent.js.map +1 -1
  20. package/dist/commands/code-version.d.ts +6 -0
  21. package/dist/commands/code-version.d.ts.map +1 -0
  22. package/dist/commands/code-version.js +66 -0
  23. package/dist/commands/code-version.js.map +1 -0
  24. package/dist/commands/doctor.d.ts +14 -0
  25. package/dist/commands/doctor.d.ts.map +1 -1
  26. package/dist/commands/doctor.js +101 -32
  27. package/dist/commands/doctor.js.map +1 -1
  28. package/dist/commands/use.d.ts.map +1 -1
  29. package/dist/commands/use.js +10 -1
  30. package/dist/commands/use.js.map +1 -1
  31. package/dist/context/broker.d.ts +4 -1
  32. package/dist/context/broker.d.ts.map +1 -1
  33. package/dist/context/broker.js +9 -3
  34. package/dist/context/broker.js.map +1 -1
  35. package/dist/context/ranking.d.ts +1 -1
  36. package/dist/context/ranking.d.ts.map +1 -1
  37. package/dist/context/ranking.js +2 -1
  38. package/dist/context/ranking.js.map +1 -1
  39. package/dist/context/scoped-broker.d.ts +3 -1
  40. package/dist/context/scoped-broker.d.ts.map +1 -1
  41. package/dist/context/scoped-broker.js +8 -5
  42. package/dist/context/scoped-broker.js.map +1 -1
  43. package/dist/gateway/checkpoint-mutation-service.d.ts.map +1 -1
  44. package/dist/gateway/checkpoint-mutation-service.js +2 -1
  45. package/dist/gateway/checkpoint-mutation-service.js.map +1 -1
  46. package/dist/mcp/chatgpt-contract.d.ts +32 -0
  47. package/dist/mcp/chatgpt-contract.d.ts.map +1 -1
  48. package/dist/mcp/chatgpt-contract.js +4 -2
  49. package/dist/mcp/chatgpt-contract.js.map +1 -1
  50. package/dist/mcp/request-deadline.d.ts +1 -1
  51. package/dist/mcp/request-deadline.d.ts.map +1 -1
  52. package/dist/mcp/request-deadline.js +1 -0
  53. package/dist/mcp/request-deadline.js.map +1 -1
  54. package/dist/mcp/server.d.ts.map +1 -1
  55. package/dist/mcp/server.js +47 -4
  56. package/dist/mcp/server.js.map +1 -1
  57. package/dist/memory/applicability-context.d.ts +24 -0
  58. package/dist/memory/applicability-context.d.ts.map +1 -0
  59. package/dist/memory/applicability-context.js +129 -0
  60. package/dist/memory/applicability-context.js.map +1 -0
  61. package/dist/memory/checkpoint-contract.d.ts +30 -0
  62. package/dist/memory/checkpoint-contract.d.ts.map +1 -1
  63. package/dist/memory/checkpoint-contract.js +5 -0
  64. package/dist/memory/checkpoint-contract.js.map +1 -1
  65. package/dist/memory/code-versions.d.ts +79 -0
  66. package/dist/memory/code-versions.d.ts.map +1 -0
  67. package/dist/memory/code-versions.js +159 -0
  68. package/dist/memory/code-versions.js.map +1 -0
  69. package/dist/memory/context-budget.d.ts +5 -0
  70. package/dist/memory/context-budget.d.ts.map +1 -0
  71. package/dist/memory/context-budget.js +5 -0
  72. package/dist/memory/context-budget.js.map +1 -0
  73. package/dist/memory/entry-history.d.ts +29 -0
  74. package/dist/memory/entry-history.d.ts.map +1 -0
  75. package/dist/memory/entry-history.js +66 -0
  76. package/dist/memory/entry-history.js.map +1 -0
  77. package/dist/memory/federated-retrieval.d.ts.map +1 -1
  78. package/dist/memory/federated-retrieval.js +25 -7
  79. package/dist/memory/federated-retrieval.js.map +1 -1
  80. package/dist/memory/global-conversation-query.d.ts +3 -0
  81. package/dist/memory/global-conversation-query.d.ts.map +1 -1
  82. package/dist/memory/global-conversation-query.js +5 -2
  83. package/dist/memory/global-conversation-query.js.map +1 -1
  84. package/dist/memory/history-delivery.d.ts +57 -0
  85. package/dist/memory/history-delivery.d.ts.map +1 -0
  86. package/dist/memory/history-delivery.js +85 -0
  87. package/dist/memory/history-delivery.js.map +1 -0
  88. package/dist/memory/hybrid-retrieval.d.ts +5 -0
  89. package/dist/memory/hybrid-retrieval.d.ts.map +1 -1
  90. package/dist/memory/hybrid-retrieval.js +28 -9
  91. package/dist/memory/hybrid-retrieval.js.map +1 -1
  92. package/dist/memory/interaction-contract.d.ts +12 -2
  93. package/dist/memory/interaction-contract.d.ts.map +1 -1
  94. package/dist/memory/interaction-contract.js +3 -2
  95. package/dist/memory/interaction-contract.js.map +1 -1
  96. package/dist/memory/interaction-recall.d.ts +3 -0
  97. package/dist/memory/interaction-recall.d.ts.map +1 -1
  98. package/dist/memory/interaction-recall.js +2 -1
  99. package/dist/memory/interaction-recall.js.map +1 -1
  100. package/dist/memory/lesson-derivation.d.ts +1 -1
  101. package/dist/memory/lifecycle.d.ts.map +1 -1
  102. package/dist/memory/lifecycle.js +18 -1
  103. package/dist/memory/lifecycle.js.map +1 -1
  104. package/dist/memory/observation-contract.d.ts +8 -2
  105. package/dist/memory/observation-contract.d.ts.map +1 -1
  106. package/dist/memory/observation-contract.js +3 -1
  107. package/dist/memory/observation-contract.js.map +1 -1
  108. package/dist/memory/observations.d.ts.map +1 -1
  109. package/dist/memory/observations.js +21 -5
  110. package/dist/memory/observations.js.map +1 -1
  111. package/dist/memory/relation-delivery.d.ts +107 -0
  112. package/dist/memory/relation-delivery.d.ts.map +1 -0
  113. package/dist/memory/relation-delivery.js +163 -0
  114. package/dist/memory/relation-delivery.js.map +1 -0
  115. package/dist/memory/retrieval.d.ts +14 -0
  116. package/dist/memory/retrieval.d.ts.map +1 -1
  117. package/dist/memory/retrieval.js +19 -11
  118. package/dist/memory/retrieval.js.map +1 -1
  119. package/dist/memory/structured-memory.d.ts +5 -0
  120. package/dist/memory/structured-memory.d.ts.map +1 -1
  121. package/dist/memory/structured-memory.js +28 -6
  122. package/dist/memory/structured-memory.js.map +1 -1
  123. package/dist/repository/binding-repair.d.ts +38 -0
  124. package/dist/repository/binding-repair.d.ts.map +1 -0
  125. package/dist/repository/binding-repair.js +129 -0
  126. package/dist/repository/binding-repair.js.map +1 -0
  127. package/dist/server/agent-checkpoint-use-case.d.ts.map +1 -1
  128. package/dist/server/agent-checkpoint-use-case.js +1 -0
  129. package/dist/server/agent-checkpoint-use-case.js.map +1 -1
  130. package/dist/server/routes/agent-capability-gate.d.ts.map +1 -1
  131. package/dist/server/routes/agent-capability-gate.js +1 -0
  132. package/dist/server/routes/agent-capability-gate.js.map +1 -1
  133. package/dist/web/server.d.ts.map +1 -1
  134. package/dist/web/server.js +5 -1
  135. package/dist/web/server.js.map +1 -1
  136. package/docs/README.ja.md +2 -0
  137. package/docs/README.md +2 -0
  138. package/docs/cli-contract.md +24 -5
  139. package/docs/context-delivery.md +69 -0
  140. package/docs/getting-started.ja.md +8 -5
  141. package/docs/getting-started.md +11 -8
  142. package/docs/history-evidence.md +139 -0
  143. package/docs/interaction-memory.md +1 -1
  144. package/docs/setup-notes.ja.md +122 -0
  145. package/docs/setup-notes.ko.md +107 -0
  146. package/docs/setup-notes.md +133 -0
  147. package/docs/setup-notes.zh-CN.md +107 -0
  148. package/migrations/014_code_version_evidence.sql +26 -0
  149. package/package.json +1 -1
@@ -0,0 +1,107 @@
1
+ import type { SqliteDatabase, SqliteRow } from '../db/adapter.js';
2
+ import * as z from 'zod/v4';
3
+ export declare const RELATION_TYPES: readonly ["supports", "contradicts", "derived_from", "related_to"];
4
+ export type RelationType = (typeof RELATION_TYPES)[number];
5
+ export interface RelationEndpoint {
6
+ workspace: string;
7
+ entryId: string;
8
+ }
9
+ export interface DeliveredRelation {
10
+ from: RelationEndpoint;
11
+ to: RelationEndpoint;
12
+ type: RelationType;
13
+ }
14
+ export type SelectionOmission = 'body_budget' | 'item_limit' | 'final_filter';
15
+ export interface RelationDelivery {
16
+ scope: 'provided_items';
17
+ status: 'complete' | 'omitted_budget' | 'omitted_edge_cap' | 'omitted_unknown_type' | 'omitted_legacy';
18
+ edges: DeliveredRelation[];
19
+ selectionOmissions: SelectionOmission[];
20
+ }
21
+ export interface RelationDeliveryOptions {
22
+ relationCharacterBudget?: number;
23
+ relationEdgeCap?: number;
24
+ selectionOmissions?: readonly SelectionOmission[];
25
+ }
26
+ export declare const relationDeliverySchema: z.ZodObject<{
27
+ scope: z.ZodLiteral<"provided_items">;
28
+ status: z.ZodEnum<{
29
+ complete: "complete";
30
+ omitted_budget: "omitted_budget";
31
+ omitted_edge_cap: "omitted_edge_cap";
32
+ omitted_unknown_type: "omitted_unknown_type";
33
+ omitted_legacy: "omitted_legacy";
34
+ }>;
35
+ edges: z.ZodArray<z.ZodObject<{
36
+ from: z.ZodObject<{
37
+ workspace: z.ZodString;
38
+ entryId: z.ZodString;
39
+ }, z.core.$strict>;
40
+ to: z.ZodObject<{
41
+ workspace: z.ZodString;
42
+ entryId: z.ZodString;
43
+ }, z.core.$strict>;
44
+ type: z.ZodEnum<{
45
+ supports: "supports";
46
+ contradicts: "contradicts";
47
+ derived_from: "derived_from";
48
+ related_to: "related_to";
49
+ }>;
50
+ }, z.core.$strict>>;
51
+ selectionOmissions: z.ZodArray<z.ZodEnum<{
52
+ body_budget: "body_budget";
53
+ item_limit: "item_limit";
54
+ final_filter: "final_filter";
55
+ }>>;
56
+ }, z.core.$strict>;
57
+ export interface ProvidedRelationItem {
58
+ entryId: string;
59
+ workspace?: string;
60
+ revision?: number;
61
+ }
62
+ interface StoredRelation extends SqliteRow {
63
+ kind: string;
64
+ from_id: string;
65
+ from_workspace: string;
66
+ to_id: string;
67
+ to_workspace: string;
68
+ relation: string;
69
+ }
70
+ /** Adapter configuration; pure packing remains independent of the process environment. */
71
+ export declare function configuredRelationDeliveryOptions(options?: RelationDeliveryOptions): RelationDeliveryOptions;
72
+ /** View-only adaptation for a cached pre-contract task response; never rewrite stored history. */
73
+ export declare function markLegacyModelContext<T extends {
74
+ context?: unknown;
75
+ }>(value: T): T;
76
+ /** All edges or none. A complete result covers stored links between provided items only. */
77
+ export declare function packRelationDelivery(rows: readonly StoredRelation[], options?: RelationDeliveryOptions): RelationDelivery;
78
+ /** Old deliveries without a reconstructable relation snapshot must not claim completeness. */
79
+ export declare function legacyRelationDelivery(options?: RelationDeliveryOptions): RelationDelivery;
80
+ /** Restrict an attested complete superset after a consumer removes whole items. */
81
+ export declare function restrictRelationDelivery(raw: unknown, original: readonly ProvidedRelationItem[], provided: readonly ProvidedRelationItem[], options?: RelationDeliveryOptions): RelationDelivery;
82
+ /**
83
+ * One statement owns the SQLite read snapshot, including selected-revision checks.
84
+ * CROSS JOIN fixes the loop order: at most n² endpoint-pair index seeks (n <= 1000),
85
+ * rather than scanning an unbounded outgoing adjacency list. No global sort/count.
86
+ * LIMIT cap+1 bounds materialized edges, not the claim about internal scan work.
87
+ */
88
+ export declare function readRelationDelivery(database: SqliteDatabase, items: readonly ProvidedRelationItem[], options?: RelationDeliveryOptions): RelationDelivery;
89
+ interface ModelMemoryItem {
90
+ id?: string;
91
+ entryId?: string;
92
+ workspace?: string;
93
+ revision?: number;
94
+ entryRevision?: number;
95
+ content?: unknown;
96
+ }
97
+ /** Final presentation boundary: keep model-visible identities and recompute for these exact items. */
98
+ export declare function attachRelationDelivery<T extends {
99
+ items: readonly ModelMemoryItem[];
100
+ truncated?: boolean;
101
+ }>(database: SqliteDatabase, value: T, options?: RelationDeliveryOptions & {
102
+ itemLimit?: number;
103
+ }): T & {
104
+ relationDelivery: RelationDelivery;
105
+ };
106
+ export {};
107
+ //# sourceMappingURL=relation-delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-delivery.d.ts","sourceRoot":"","sources":["../../src/memory/relation-delivery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ import * as z from 'zod/v4';
2
+ import { KiokukoError } from '../errors.js';
3
+ import { DEFAULT_RELATION_CHARACTERS, DEFAULT_RELATION_EDGE_CAP } from './context-budget.js';
4
+ export const RELATION_TYPES = ['supports', 'contradicts', 'derived_from', 'related_to'];
5
+ const endpointSchema = z.object({ workspace: z.string().min(1).max(256), entryId: z.string().min(1).max(256) }).strict();
6
+ export const relationDeliverySchema = z.object({
7
+ scope: z.literal('provided_items'),
8
+ status: z.enum(['complete', 'omitted_budget', 'omitted_edge_cap', 'omitted_unknown_type', 'omitted_legacy']),
9
+ edges: z.array(z.object({ from: endpointSchema, to: endpointSchema, type: z.enum(RELATION_TYPES) }).strict()).max(1024),
10
+ selectionOmissions: z.array(z.enum(['body_budget', 'item_limit', 'final_filter'])).max(3),
11
+ }).strict().refine(value => value.status === 'complete' || value.edges.length === 0, 'An omitted delivery cannot contain partial edges');
12
+ function limits(options) {
13
+ const characters = options.relationCharacterBudget ?? DEFAULT_RELATION_CHARACTERS;
14
+ const edgeCap = options.relationEdgeCap ?? DEFAULT_RELATION_EDGE_CAP;
15
+ if (!Number.isSafeInteger(characters) || characters < 1 || characters > 100_000
16
+ || !Number.isSafeInteger(edgeCap) || edgeCap < 1 || edgeCap > 1024
17
+ || options.selectionOmissions?.some(reason => !['body_budget', 'item_limit', 'final_filter'].includes(reason))) {
18
+ throw new KiokukoError('VALIDATION_ERROR', 'Relation delivery limits are invalid');
19
+ }
20
+ return { characters, edgeCap };
21
+ }
22
+ /** Adapter configuration; pure packing remains independent of the process environment. */
23
+ export function configuredRelationDeliveryOptions(options = {}) {
24
+ const result = { ...options,
25
+ relationCharacterBudget: options.relationCharacterBudget ?? Number(process.env.KIOKUKO_RELATION_CHARACTER_BUDGET ?? DEFAULT_RELATION_CHARACTERS),
26
+ relationEdgeCap: options.relationEdgeCap ?? Number(process.env.KIOKUKO_RELATION_EDGE_CAP ?? DEFAULT_RELATION_EDGE_CAP),
27
+ };
28
+ limits(result);
29
+ return result;
30
+ }
31
+ /** View-only adaptation for a cached pre-contract task response; never rewrite stored history. */
32
+ export function markLegacyModelContext(value) {
33
+ const context = value.context;
34
+ if (typeof context !== 'object' || context === null || Array.isArray(context)
35
+ || !Array.isArray(context.items) || Object.hasOwn(context, 'relationDelivery'))
36
+ return value;
37
+ return { ...value, context: { ...context, relationDelivery: legacyRelationDelivery(configuredRelationDeliveryOptions()) } };
38
+ }
39
+ /** All edges or none. A complete result covers stored links between provided items only. */
40
+ export function packRelationDelivery(rows, options = {}) {
41
+ const { characters, edgeCap } = limits(options);
42
+ const fit = (status, edges) => {
43
+ const value = { scope: 'provided_items', status, edges,
44
+ selectionOmissions: [...new Set(options.selectionOmissions ?? [])].sort() };
45
+ if (Array.from(JSON.stringify({ relationDelivery: value })).length <= characters)
46
+ return value;
47
+ if (status === 'complete')
48
+ return fit('omitted_budget', []);
49
+ throw new KiokukoError('VALIDATION_ERROR', 'Relation metadata budget cannot fit its explicit delivery status');
50
+ };
51
+ if (rows.length > edgeCap)
52
+ return fit('omitted_edge_cap', []);
53
+ if (rows.some(row => !RELATION_TYPES.includes(row.relation)))
54
+ return fit('omitted_unknown_type', []);
55
+ const edges = rows.map(row => ({ from: { workspace: row.from_workspace, entryId: row.from_id },
56
+ to: { workspace: row.to_workspace, entryId: row.to_id }, type: row.relation }));
57
+ edges.sort((a, b) => {
58
+ const left = JSON.stringify(a), right = JSON.stringify(b);
59
+ return left < right ? -1 : left > right ? 1 : 0;
60
+ });
61
+ return fit('complete', edges);
62
+ }
63
+ /** Old deliveries without a reconstructable relation snapshot must not claim completeness. */
64
+ export function legacyRelationDelivery(options = {}) {
65
+ const { characters } = limits(options);
66
+ const value = { scope: 'provided_items', status: 'omitted_legacy', edges: [],
67
+ selectionOmissions: [...new Set(options.selectionOmissions ?? [])].sort() };
68
+ if (Array.from(JSON.stringify({ relationDelivery: value })).length > characters) {
69
+ throw new KiokukoError('VALIDATION_ERROR', 'Relation metadata budget cannot fit its explicit delivery status');
70
+ }
71
+ return value;
72
+ }
73
+ /** Restrict an attested complete superset after a consumer removes whole items. */
74
+ export function restrictRelationDelivery(raw, original, provided, options = {}) {
75
+ if (raw === undefined)
76
+ return legacyRelationDelivery(options);
77
+ const parsed = relationDeliverySchema.safeParse(raw);
78
+ if (!parsed.success)
79
+ throw new KiokukoError('INTEGRITY_ERROR', 'Stored relation delivery is invalid');
80
+ const key = (item) => JSON.stringify([item.workspace, item.entryId]);
81
+ const originalIds = new Set(original.map(key));
82
+ if (provided.some(item => !originalIds.has(key(item))))
83
+ throw new KiokukoError('INTEGRITY_ERROR', 'Final relation items are not a subset of the original delivery');
84
+ if (parsed.data.status === 'complete' && original.some(item => !item.workspace))
85
+ throw new KiokukoError('INTEGRITY_ERROR', 'Complete relations require model-visible workspace identities');
86
+ if (parsed.data.edges.some(edge => !originalIds.has(key(edge.from)) || !originalIds.has(key(edge.to))))
87
+ throw new KiokukoError('INTEGRITY_ERROR', 'Relation endpoints are outside the original delivery');
88
+ const ids = new Set(provided.map(key));
89
+ const selectionOmissions = [...new Set([...parsed.data.selectionOmissions, ...(options.selectionOmissions ?? []),
90
+ ...(provided.length < original.length ? ['final_filter'] : [])])].sort();
91
+ const settings = { ...options, selectionOmissions };
92
+ if (parsed.data.status === 'complete') {
93
+ return packRelationDelivery(parsed.data.edges.filter(edge => ids.has(key(edge.from)) && ids.has(key(edge.to))).map(edge => ({
94
+ kind: 'edge', from_id: edge.from.entryId, from_workspace: edge.from.workspace,
95
+ to_id: edge.to.entryId, to_workspace: edge.to.workspace, relation: edge.type,
96
+ })), settings);
97
+ }
98
+ const { characters } = limits(settings);
99
+ const value = { ...parsed.data, edges: [], selectionOmissions };
100
+ if (Array.from(JSON.stringify({ relationDelivery: value })).length > characters)
101
+ throw new KiokukoError('VALIDATION_ERROR', 'Relation metadata budget cannot fit its explicit delivery status');
102
+ return value;
103
+ }
104
+ /**
105
+ * One statement owns the SQLite read snapshot, including selected-revision checks.
106
+ * CROSS JOIN fixes the loop order: at most n² endpoint-pair index seeks (n <= 1000),
107
+ * rather than scanning an unbounded outgoing adjacency list. No global sort/count.
108
+ * LIMIT cap+1 bounds materialized edges, not the claim about internal scan work.
109
+ */
110
+ export function readRelationDelivery(database, items, options = {}) {
111
+ const { edgeCap } = limits(options);
112
+ if (items.length > 1000 || new Set(items.map(item => item.entryId)).size !== items.length
113
+ || items.some(item => typeof item.entryId !== 'string' || !item.entryId
114
+ || item.workspace !== undefined && (typeof item.workspace !== 'string' || !item.workspace)
115
+ || item.revision !== undefined && (!Number.isSafeInteger(item.revision) || item.revision < 1))) {
116
+ throw new KiokukoError('VALIDATION_ERROR', 'Provided relation endpoints are invalid');
117
+ }
118
+ if (items.length === 0)
119
+ return packRelationDelivery([], options);
120
+ const sql = 'WITH selected(id, workspace, revision) AS (VALUES ' + items.map(() => '(?,?,?)').join(',') + '), '
121
+ + 'current AS (SELECT s.id, e.workspace, e.current_revision FROM selected s JOIN entries e ON e.id=s.id), '
122
+ + 'invalid AS (SELECT 1 FROM selected s LEFT JOIN current e ON e.id=s.id '
123
+ + 'WHERE e.id IS NULL OR (s.workspace IS NOT NULL AND s.workspace<>e.workspace) '
124
+ + 'OR (s.revision IS NOT NULL AND s.revision<>e.current_revision) LIMIT 1), '
125
+ + 'links AS (SELECT a.id from_id, a.workspace from_workspace, b.id to_id, b.workspace to_workspace, l.relation '
126
+ + 'FROM current a CROSS JOIN current b CROSS JOIN entry_links l '
127
+ + 'WHERE l.from_entry_id=a.id AND l.to_entry_id=b.id LIMIT ?) '
128
+ + "SELECT 'invalid' kind, '' from_id, '' from_workspace, '' to_id, '' to_workspace, '' relation FROM invalid "
129
+ + "UNION ALL SELECT 'edge' kind, from_id, from_workspace, to_id, to_workspace, relation FROM links";
130
+ const rows = database.prepare(sql).all(...items.flatMap(item => [item.entryId, item.workspace ?? null, item.revision ?? null]), edgeCap + 1);
131
+ if (rows.some(row => row.kind === 'invalid'))
132
+ throw new KiokukoError('CONFLICT', 'Provided items changed before relation delivery');
133
+ return packRelationDelivery(rows, options);
134
+ }
135
+ /** Final presentation boundary: keep model-visible identities and recompute for these exact items. */
136
+ export function attachRelationDelivery(database, value, options = {}) {
137
+ const ids = value.items.map(item => item.entryId ?? item.id ?? '');
138
+ if (ids.some(id => !id) || ids.length > 1000)
139
+ throw new KiokukoError('VALIDATION_ERROR', 'Model memory identities are invalid');
140
+ const identities = ids.length ? database.prepare('SELECT id, workspace, current_revision FROM entries WHERE id IN ('
141
+ + ids.map(() => '?').join(',') + ')').all(...ids) : [];
142
+ const byId = new Map(identities.map(row => [row.id, row]));
143
+ const references = value.items.map((item, index) => {
144
+ const current = byId.get(ids[index]);
145
+ if (!current)
146
+ throw new KiokukoError('CONFLICT', 'A provided memory disappeared before relation delivery');
147
+ return { entryId: current.id, workspace: item.workspace ?? current.workspace,
148
+ revision: item.revision ?? item.entryRevision ?? current.current_revision };
149
+ });
150
+ const omissions = new Set(options.selectionOmissions ?? []);
151
+ if (options.itemLimit !== undefined && value.items.length >= options.itemLimit)
152
+ omissions.add('item_limit');
153
+ const partialBody = value.items.some(item => typeof item.content === 'object' && item.content !== null
154
+ && item.content.truncated === true);
155
+ if (partialBody)
156
+ omissions.add('body_budget');
157
+ if (value.truncated && omissions.size === 0)
158
+ omissions.add('final_filter');
159
+ const configured = configuredRelationDeliveryOptions({ ...options, selectionOmissions: [...omissions] });
160
+ const relationDelivery = readRelationDelivery(database, references, configured);
161
+ return { ...value, items: value.items.map((item, index) => ({ ...item, workspace: references[index].workspace })), relationDelivery };
162
+ }
163
+ //# sourceMappingURL=relation-delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-delivery.js","sourceRoot":"","sources":["../../src/memory/relation-delivery.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import type { HistoryOmission } from './entry-history.js';
2
+ import { type HistoryDelivery, type OutputDelivery } from './history-delivery.js';
3
+ import { type RelationDelivery } from './relation-delivery.js';
1
4
  import type { SqliteDatabase } from '../db/adapter.js';
2
5
  import { type EntryRecord } from './entries.js';
3
6
  import { type EntryKind, type EntryStatus } from '../serialization/validate.js';
@@ -8,6 +11,7 @@ import { type RerankerDiagnostics } from '../reranker/service.js';
8
11
  import { type LessonDeduplicationResult } from './lesson-derivation.js';
9
12
  export interface SearchEntriesInput {
10
13
  workspace: string;
14
+ cwd?: string;
11
15
  query: string;
12
16
  limit?: number;
13
17
  kind?: EntryKind;
@@ -21,15 +25,20 @@ export interface SearchEntriesInput {
21
25
  relatedCandidateLimit?: number;
22
26
  }
23
27
  export interface SearchResult {
28
+ historySelectionOmissions?: HistoryOmission[];
24
29
  items: EntryRecord[];
25
30
  count: number;
26
31
  truncated: boolean;
27
32
  rerankerDiagnostics?: RerankerDiagnostics;
28
33
  }
29
34
  export interface RecallEntriesInput extends SearchEntriesInput {
35
+ includeHistory?: boolean;
36
+ maxOutputChars?: number;
37
+ cwd?: string;
30
38
  maxChars?: number;
31
39
  }
32
40
  export interface RecallItem {
41
+ revision?: number;
33
42
  id: string;
34
43
  workspace: string;
35
44
  kind: EntryKind;
@@ -46,6 +55,10 @@ export interface RecallItem {
46
55
  selectionReasons?: string[];
47
56
  }
48
57
  export interface RecallResult {
58
+ historySelectionOmissions?: HistoryOmission[];
59
+ historyDelivery?: HistoryDelivery;
60
+ outputDelivery?: OutputDelivery;
61
+ relationDelivery?: RelationDelivery;
49
62
  items: RecallItem[];
50
63
  count: number;
51
64
  characterCount: number;
@@ -60,6 +73,7 @@ export interface RankedRecallHit {
60
73
  reasons: string[];
61
74
  }
62
75
  export interface RankedRecallResult {
76
+ historyOmissions?: HistoryOmission[];
63
77
  hits: RankedRecallHit[];
64
78
  truncated: boolean;
65
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../../src/memory/retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAClG,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE1F,OAAO,EAAqE,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAG3I,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE;QACR,UAAU,EAAE,IAAI,CAAC;QACjB,SAAS,EAAE,IAAI,CAAC;QAChB,YAAY,EAAE,KAAK,CAAC;KACrB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,8BAA8B,CAAC,EAAE,yBAAyB,CAAC,aAAa,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB;AAgCD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CAgBpB;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,mBAAwB,GAChC,YAAY,CAKd;AAcD,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,mBAAwB,EACjC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAkBvB;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,mBAAwB,GAChC,YAAY,CAmBd;AAiDD,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,mBAAwB,EACjC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAsCvB"}
1
+ {"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../../src/memory/retrieval.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import { finalizeHistoryRecall } from './history-delivery.js';
2
+ import { attachRelationDelivery } from './relation-delivery.js';
3
+ import { DEFAULT_CONTEXT_CHARACTERS } from './context-budget.js';
1
4
  import { KiokukoError } from '../errors.js';
2
5
  import { readEntry } from './entries.js';
3
6
  import { requireWorkspace } from '../serialization/validate.js';
@@ -9,7 +12,7 @@ import { deduplicateDeliverableLessonSources, formatLessonSourceReferences } fro
9
12
  import { effectiveRelatedSearchMode } from './search-extension-config.js';
10
13
  const DEFAULT_SEARCH_LIMIT = 20;
11
14
  const DEFAULT_RECALL_LIMIT = 5;
12
- const DEFAULT_RECALL_MAX_CHARS = 8000;
15
+ const DEFAULT_RECALL_MAX_CHARS = DEFAULT_CONTEXT_CHARACTERS;
13
16
  const MAX_LIMIT = 1000;
14
17
  const MAX_RECALL_CHARS = 100_000;
15
18
  function characterCount(value) {
@@ -40,7 +43,8 @@ export function rankedEntryHits(database, input, runtime = {}) {
40
43
  const normalizedInput = { ...input, workspace };
41
44
  if (normalizedInput.query.trim().length === 0)
42
45
  return { hits: [], truncated: false };
43
- const candidates = hybridSearch(database, { ...normalizedInput, limit }, runtime);
46
+ const omissions = [];
47
+ const candidates = hybridSearch(database, { ...normalizedInput, limit }, { ...runtime, onHistoryOmission(value) { omissions.push(value); runtime.onHistoryOmission?.(value); } });
44
48
  return {
45
49
  hits: candidates.slice(0, limit).map((candidate, index) => ({
46
50
  entryId: candidate.entryId,
@@ -49,13 +53,14 @@ export function rankedEntryHits(database, input, runtime = {}) {
49
53
  reasons: [...candidate.reasons],
50
54
  })),
51
55
  truncated: candidates.length > limit,
56
+ ...(omissions.length ? { historyOmissions: [...new Map(omissions.map(o => [JSON.stringify(o), o])).values()] } : {}),
52
57
  };
53
58
  }
54
59
  export function searchEntries(database, input, runtime = {}) {
55
60
  const limit = normalizedLimit(input.limit, DEFAULT_SEARCH_LIMIT);
56
61
  const selected = rankedEntryHits(database, { ...input, limit }, runtime);
57
62
  const items = selected.hits.map((hit) => readEntry(database, { workspace: input.workspace, entryId: hit.entryId }));
58
- return { items, count: items.length, truncated: selected.truncated };
63
+ return { items, count: items.length, truncated: selected.truncated, ...(selected.historyOmissions ? { historySelectionOmissions: selected.historyOmissions } : {}) };
59
64
  }
60
65
  function candidateSnapshotHash(items) {
61
66
  return canonicalContentHash(items.map((entry) => ({
@@ -105,12 +110,13 @@ export function recallEntries(database, input, runtime = {}) {
105
110
  const reasons = new Map();
106
111
  for (const id of retained)
107
112
  reasons.set(id, ['duplicate_source_suppressed']);
108
- return {
109
- ...packRecallEntries(input, deduplicated.entries, selected.truncated || suppressed.size > 0, maxChars, sourceNotes, reasons),
113
+ return finalizeHistoryRecall(database, {
114
+ ...packRecallEntries(database, input, deduplicated.entries, selected.truncated || suppressed.size > 0, maxChars, sourceNotes, reasons),
110
115
  lessonDeduplicationDiagnostics: deduplicated.diagnostics,
111
- };
116
+ ...(selected.historyOmissions ? { historySelectionOmissions: selected.historyOmissions } : {}),
117
+ }, input);
112
118
  }
113
- function packRecallEntries(input, entries, selectedTruncated, maxChars = normalizedMaxChars(input.maxChars), sourceNotes = new Map(), selectionReasons = new Map()) {
119
+ function packRecallEntries(database, input, entries, selectedTruncated, maxChars = normalizedMaxChars(input.maxChars), sourceNotes = new Map(), selectionReasons = new Map()) {
114
120
  const items = [];
115
121
  let characters = 0;
116
122
  let truncated = false;
@@ -132,6 +138,7 @@ function packRecallEntries(input, entries, selectedTruncated, maxChars = normali
132
138
  truncated = true;
133
139
  items.push({
134
140
  id: entry.id,
141
+ revision: entry.revision,
135
142
  workspace: entry.workspace,
136
143
  kind: entry.kind,
137
144
  status: entry.status,
@@ -148,7 +155,7 @@ function packRecallEntries(input, entries, selectedTruncated, maxChars = normali
148
155
  }
149
156
  if (items.length < entries.length || selectedTruncated)
150
157
  truncated = true;
151
- return { items, count: items.length, characterCount: characters, truncated };
158
+ return attachRelationDelivery(database, { items, count: items.length, characterCount: characters, truncated }, { itemLimit: input.limit ?? DEFAULT_RECALL_LIMIT, selectionOmissions: [...(selectedTruncated ? ['item_limit'] : []), ...(truncated ? ['body_budget'] : [])] });
152
159
  }
153
160
  export async function recallEntriesWithReranker(database, input, runtime = {}, signal) {
154
161
  const config = readRerankerConfig();
@@ -185,11 +192,12 @@ export async function recallEntriesWithReranker(database, input, runtime = {}, s
185
192
  }) !== originalHash) {
186
193
  throw new KiokukoError('CONFLICT', 'Recall selection changed during reranker inference');
187
194
  }
188
- const result = packRecallEntries(input, reranked.candidates.map(({ entry }) => entry), baseline.truncated || suppressed.size > 0, maxChars, sourceNotes, reasons);
189
- return {
195
+ const result = packRecallEntries(database, input, reranked.candidates.map(({ entry }) => entry), baseline.truncated || suppressed.size > 0, maxChars, sourceNotes, reasons);
196
+ return finalizeHistoryRecall(database, {
190
197
  ...result,
198
+ ...(baseline.historySelectionOmissions ? { historySelectionOmissions: baseline.historySelectionOmissions } : {}),
191
199
  lessonDeduplicationDiagnostics: deduplicated.diagnostics,
192
200
  ...(reranked.diagnostics === undefined ? {} : { rerankerDiagnostics: reranked.diagnostics }),
193
- };
201
+ }, input);
194
202
  }
195
203
  //# sourceMappingURL=retrieval.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retrieval.js","sourceRoot":"","sources":["../../src/memory/retrieval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retrieval.js","sourceRoot":"","sources":["../../src/memory/retrieval.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,11 @@ export type MemoryClass = (typeof MEMORY_CLASSES)[number];
5
5
  export declare const RETRIEVAL_SCOPES: readonly ["project-only", "ecosystem", "global"];
6
6
  export type RetrievalScope = (typeof RETRIEVAL_SCOPES)[number];
7
7
  export interface Applicability {
8
+ ownerIds?: string[];
9
+ repositoryIds?: string[];
10
+ workspaces?: string[];
11
+ branches?: string[];
12
+ environment?: Record<string, string>;
8
13
  languages?: string[];
9
14
  frameworks?: Array<{
10
15
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"structured-memory.d.ts","sourceRoot":"","sources":["../../src/memory/structured-memory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI3G,eAAO,MAAM,cAAc,2JAGjB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,eAAO,MAAM,gBAAgB,kDAAmD,CAAC;AACjF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,0DAA0D;AAC1D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAQtF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAOhF;AAgCD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAkCnE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAa7D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,GAAG,UAAU,CAsBjF;AAMD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;CACnB,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA6BzC;AAwBD,+FAA+F;AAC/F,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CA+BlF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAM7H;AAED,wEAAwE;AACxE,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CA6BhI"}
1
+ {"version":3,"file":"structured-memory.d.ts","sourceRoot":"","sources":["../../src/memory/structured-memory.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
+ import semver from 'semver';
1
2
  import { readEntry } from './entries.js';
2
3
  import { syncInteractionFingerprint } from './interaction-fingerprint.js';
3
4
  import { KiokukoError } from '../errors.js';
4
5
  import { canonicalTagOrder, compareCanonicalStrings } from '../serialization/validate.js';
5
6
  import { normalizeSearchSignal } from './retrieval-query.js';
6
- import { findSecret } from './secrets.js';
7
+ import { findSecret, findSecretInValue } from './secrets.js';
7
8
  export const MEMORY_CLASSES = [
8
9
  'implementation-pattern', 'troubleshooting', 'tool-usage', 'extension-usage',
9
10
  'configuration', 'workflow', 'gotcha', 'reference', 'preference',
@@ -24,10 +25,10 @@ export function hasExplicitApplicability(scope) {
24
25
  if (typeof applicability !== 'object' || applicability === null || Array.isArray(applicability))
25
26
  return false;
26
27
  const values = Object.entries(applicability);
27
- const dimensions = new Set(['languages', 'frameworks', 'databases', 'runtimes', 'tools', 'platforms']);
28
- if (values.some(([key, value]) => !dimensions.has(key) || !Array.isArray(value)))
28
+ const dimensions = new Set(['languages', 'frameworks', 'databases', 'runtimes', 'tools', 'platforms', 'ownerIds', 'repositoryIds', 'workspaces', 'branches', 'environment']);
29
+ if (values.some(([key, value]) => !dimensions.has(key) || (key === 'environment' ? typeof value !== 'object' || value === null || Array.isArray(value) : !Array.isArray(value))))
29
30
  return false;
30
- return values.some(([, value]) => value.length > 0);
31
+ return values.some(([, value]) => typeof value === 'object' && value !== null && Object.keys(value).length > 0);
31
32
  }
32
33
  const SIGNAL_TYPES = {
33
34
  language: 'language', framework: 'framework', runtime: 'runtime', database: 'database',
@@ -58,10 +59,12 @@ function validateRelativePath(value) {
58
59
  return value.replaceAll('\\', '/');
59
60
  }
60
61
  export function validateApplicability(value) {
62
+ if (findSecretInValue(value))
63
+ throw new KiokukoError('SECURITY_REJECTION', 'Applicability resembles a secret and was not stored');
61
64
  if (typeof value !== 'object' || value === null || Array.isArray(value))
62
65
  invalid();
63
66
  const input = value;
64
- const allowed = new Set(['languages', 'frameworks', 'databases', 'runtimes', 'tools', 'platforms']);
67
+ const allowed = new Set(['languages', 'frameworks', 'databases', 'runtimes', 'tools', 'platforms', 'ownerIds', 'repositoryIds', 'workspaces', 'branches', 'environment']);
65
68
  if (Object.keys(input).some((key) => !allowed.has(key)))
66
69
  invalid();
67
70
  const frameworks = input.frameworks === undefined
@@ -84,6 +87,25 @@ export function validateApplicability(value) {
84
87
  .sort((left, right) => compareCanonicalStrings(`${left.name}\u0000${left.version ?? ''}`, `${right.name}\u0000${right.version ?? ''}`));
85
88
  })();
86
89
  const result = {};
90
+ for (const key of ['ownerIds', 'repositoryIds', 'workspaces', 'branches']) {
91
+ const raw = input[key];
92
+ if (raw === undefined)
93
+ continue;
94
+ if (!Array.isArray(raw) || raw.length > 100 || raw.some(item => typeof item !== 'string' || !item || item.length > 256 || /[\u0000-\u0020\u007f]/u.test(item)))
95
+ invalid();
96
+ result[key] = [...new Set(raw)].sort(compareCanonicalStrings);
97
+ }
98
+ if (input.environment !== undefined) {
99
+ const raw = input.environment;
100
+ if (typeof raw !== 'object' || raw === null || Array.isArray(raw) || Object.keys(raw).length > 32)
101
+ invalid();
102
+ const entries = Object.entries(raw);
103
+ if (entries.some(([key, value]) => !/^[A-Za-z][A-Za-z0-9_.-]{0,63}$/u.test(key) || typeof value !== 'string' || !value || value.length > 256 || /[\u0000-\u001f\u007f]/u.test(value)))
104
+ invalid();
105
+ result.environment = Object.fromEntries(entries);
106
+ if (result.environment.node !== undefined && semver.validRange(result.environment.node) === null)
107
+ invalid();
108
+ }
87
109
  const languages = optionalStringList(input.languages);
88
110
  const databases = optionalStringList(input.databases);
89
111
  const runtimes = optionalStringList(input.runtimes);
@@ -129,7 +151,7 @@ export function buildStructuredScope(options) {
129
151
  if (options.visibility === 'project' && options.retrievalScope === 'global')
130
152
  invalid();
131
153
  const validatedApplicability = options.applicability === undefined ? undefined : validateApplicability(options.applicability);
132
- const hasApplicability = validatedApplicability !== undefined && Object.values(validatedApplicability).some((value) => Array.isArray(value) && value.length > 0);
154
+ const hasApplicability = validatedApplicability !== undefined && hasExplicitApplicability({ applicability: validatedApplicability });
133
155
  if (options.visibility === 'project' && options.retrievalScope === 'ecosystem' && !hasApplicability)
134
156
  invalid();
135
157
  if (options.visibility === 'global' && !hasApplicability && options.portableReason === undefined)