@oscharko-dev/keiko-contracts 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/bff-wire.d.ts +661 -0
  3. package/dist/bff-wire.d.ts.map +1 -0
  4. package/dist/bff-wire.js +102 -0
  5. package/dist/bug-investigation-events.d.ts +92 -0
  6. package/dist/bug-investigation-events.d.ts.map +1 -0
  7. package/dist/bug-investigation-events.js +18 -0
  8. package/dist/coding-context.d.ts +76 -0
  9. package/dist/coding-context.d.ts.map +1 -0
  10. package/dist/coding-context.js +158 -0
  11. package/dist/connected-context.d.ts +174 -0
  12. package/dist/connected-context.d.ts.map +1 -0
  13. package/dist/connected-context.js +636 -0
  14. package/dist/conversation-budget.d.ts +37 -0
  15. package/dist/conversation-budget.d.ts.map +1 -0
  16. package/dist/conversation-budget.js +97 -0
  17. package/dist/editor-agent.d.ts +131 -0
  18. package/dist/editor-agent.d.ts.map +1 -0
  19. package/dist/editor-agent.js +197 -0
  20. package/dist/editor-completion.d.ts +62 -0
  21. package/dist/editor-completion.d.ts.map +1 -0
  22. package/dist/editor-completion.js +147 -0
  23. package/dist/editor-dirty-close.d.ts +17 -0
  24. package/dist/editor-dirty-close.d.ts.map +1 -0
  25. package/dist/editor-dirty-close.js +8 -0
  26. package/dist/editor-hot-exit.d.ts +18 -0
  27. package/dist/editor-hot-exit.d.ts.map +1 -0
  28. package/dist/editor-hot-exit.js +42 -0
  29. package/dist/editor-inline-completion.d.ts +70 -0
  30. package/dist/editor-inline-completion.d.ts.map +1 -0
  31. package/dist/editor-inline-completion.js +215 -0
  32. package/dist/editor-layout.d.ts +105 -0
  33. package/dist/editor-layout.d.ts.map +1 -0
  34. package/dist/editor-layout.js +479 -0
  35. package/dist/editor-patch-apply.d.ts +77 -0
  36. package/dist/editor-patch-apply.d.ts.map +1 -0
  37. package/dist/editor-patch-apply.js +122 -0
  38. package/dist/editor-session.d.ts +31 -0
  39. package/dist/editor-session.d.ts.map +1 -0
  40. package/dist/editor-session.js +75 -0
  41. package/dist/editor-test-generation.d.ts +104 -0
  42. package/dist/editor-test-generation.d.ts.map +1 -0
  43. package/dist/editor-test-generation.js +211 -0
  44. package/dist/evaluations.d.ts +75 -0
  45. package/dist/evaluations.d.ts.map +1 -0
  46. package/dist/evaluations.js +16 -0
  47. package/dist/evidence.d.ts +297 -0
  48. package/dist/evidence.d.ts.map +1 -0
  49. package/dist/evidence.js +9 -0
  50. package/dist/gateway.d.ts +129 -0
  51. package/dist/gateway.d.ts.map +1 -0
  52. package/dist/gateway.js +66 -0
  53. package/dist/harness.d.ts +274 -0
  54. package/dist/harness.d.ts.map +1 -0
  55. package/dist/harness.js +38 -0
  56. package/dist/index.d.ts +101 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +83 -0
  59. package/dist/language-service.d.ts +145 -0
  60. package/dist/language-service.d.ts.map +1 -0
  61. package/dist/language-service.js +161 -0
  62. package/dist/local-knowledge-large-document-validation.d.ts +7 -0
  63. package/dist/local-knowledge-large-document-validation.d.ts.map +1 -0
  64. package/dist/local-knowledge-large-document-validation.js +161 -0
  65. package/dist/local-knowledge-large-document.d.ts +113 -0
  66. package/dist/local-knowledge-large-document.d.ts.map +1 -0
  67. package/dist/local-knowledge-large-document.js +142 -0
  68. package/dist/local-knowledge-paths.d.ts +3 -0
  69. package/dist/local-knowledge-paths.d.ts.map +1 -0
  70. package/dist/local-knowledge-paths.js +65 -0
  71. package/dist/local-knowledge-records.d.ts +190 -0
  72. package/dist/local-knowledge-records.d.ts.map +1 -0
  73. package/dist/local-knowledge-records.js +36 -0
  74. package/dist/local-knowledge-schema-validation.d.ts +19 -0
  75. package/dist/local-knowledge-schema-validation.d.ts.map +1 -0
  76. package/dist/local-knowledge-schema-validation.js +115 -0
  77. package/dist/local-knowledge-schema.d.ts +14 -0
  78. package/dist/local-knowledge-schema.d.ts.map +1 -0
  79. package/dist/local-knowledge-schema.js +715 -0
  80. package/dist/local-knowledge-validation.d.ts +20 -0
  81. package/dist/local-knowledge-validation.d.ts.map +1 -0
  82. package/dist/local-knowledge-validation.js +487 -0
  83. package/dist/local-knowledge.d.ts +158 -0
  84. package/dist/local-knowledge.d.ts.map +1 -0
  85. package/dist/local-knowledge.js +63 -0
  86. package/dist/memory-audit-events.d.ts +73 -0
  87. package/dist/memory-audit-events.d.ts.map +1 -0
  88. package/dist/memory-audit-events.js +44 -0
  89. package/dist/memory-audit-validation.d.ts +4 -0
  90. package/dist/memory-audit-validation.d.ts.map +1 -0
  91. package/dist/memory-audit-validation.js +151 -0
  92. package/dist/memory-barrel.d.ts +15 -0
  93. package/dist/memory-barrel.d.ts.map +1 -0
  94. package/dist/memory-barrel.js +20 -0
  95. package/dist/memory-internal.d.ts +26 -0
  96. package/dist/memory-internal.d.ts.map +1 -0
  97. package/dist/memory-internal.js +104 -0
  98. package/dist/memory-operations-validation.d.ts +12 -0
  99. package/dist/memory-operations-validation.d.ts.map +1 -0
  100. package/dist/memory-operations-validation.js +267 -0
  101. package/dist/memory-operations.d.ts +156 -0
  102. package/dist/memory-operations.d.ts.map +1 -0
  103. package/dist/memory-operations.js +29 -0
  104. package/dist/memory-record-validation.d.ts +10 -0
  105. package/dist/memory-record-validation.d.ts.map +1 -0
  106. package/dist/memory-record-validation.js +101 -0
  107. package/dist/memory-records.d.ts +66 -0
  108. package/dist/memory-records.d.ts.map +1 -0
  109. package/dist/memory-records.js +22 -0
  110. package/dist/memory-retrieval-validation.d.ts +6 -0
  111. package/dist/memory-retrieval-validation.d.ts.map +1 -0
  112. package/dist/memory-retrieval-validation.js +108 -0
  113. package/dist/memory-validation.d.ts +31 -0
  114. package/dist/memory-validation.d.ts.map +1 -0
  115. package/dist/memory-validation.js +318 -0
  116. package/dist/memory-workflow-port.d.ts +26 -0
  117. package/dist/memory-workflow-port.d.ts.map +1 -0
  118. package/dist/memory-workflow-port.js +13 -0
  119. package/dist/memory.d.ts +81 -0
  120. package/dist/memory.d.ts.map +1 -0
  121. package/dist/memory.js +104 -0
  122. package/dist/prompt-enhancer-analyzer.d.ts +7 -0
  123. package/dist/prompt-enhancer-analyzer.d.ts.map +1 -0
  124. package/dist/prompt-enhancer-analyzer.js +745 -0
  125. package/dist/prompt-enhancer-bff.d.ts +67 -0
  126. package/dist/prompt-enhancer-bff.d.ts.map +1 -0
  127. package/dist/prompt-enhancer-bff.js +156 -0
  128. package/dist/prompt-enhancer-critic.d.ts +46 -0
  129. package/dist/prompt-enhancer-critic.d.ts.map +1 -0
  130. package/dist/prompt-enhancer-critic.js +35 -0
  131. package/dist/prompt-enhancer-grounding.d.ts +19 -0
  132. package/dist/prompt-enhancer-grounding.d.ts.map +1 -0
  133. package/dist/prompt-enhancer-grounding.js +235 -0
  134. package/dist/prompt-enhancer-safety.d.ts +66 -0
  135. package/dist/prompt-enhancer-safety.d.ts.map +1 -0
  136. package/dist/prompt-enhancer-safety.js +446 -0
  137. package/dist/prompt-enhancer-validation.d.ts +28 -0
  138. package/dist/prompt-enhancer-validation.d.ts.map +1 -0
  139. package/dist/prompt-enhancer-validation.js +931 -0
  140. package/dist/prompt-enhancer.d.ts +184 -0
  141. package/dist/prompt-enhancer.d.ts.map +1 -0
  142. package/dist/prompt-enhancer.js +350 -0
  143. package/dist/qualityIntelligence/assertNever.d.ts +2 -0
  144. package/dist/qualityIntelligence/assertNever.d.ts.map +1 -0
  145. package/dist/qualityIntelligence/assertNever.js +7 -0
  146. package/dist/qualityIntelligence/auditSummary.d.ts +25 -0
  147. package/dist/qualityIntelligence/auditSummary.d.ts.map +1 -0
  148. package/dist/qualityIntelligence/auditSummary.js +7 -0
  149. package/dist/qualityIntelligence/bffWire.d.ts +356 -0
  150. package/dist/qualityIntelligence/bffWire.d.ts.map +1 -0
  151. package/dist/qualityIntelligence/bffWire.js +22 -0
  152. package/dist/qualityIntelligence/coverageMap.d.ts +21 -0
  153. package/dist/qualityIntelligence/coverageMap.d.ts.map +1 -0
  154. package/dist/qualityIntelligence/coverageMap.js +29 -0
  155. package/dist/qualityIntelligence/editableRevision.d.ts +21 -0
  156. package/dist/qualityIntelligence/editableRevision.d.ts.map +1 -0
  157. package/dist/qualityIntelligence/editableRevision.js +8 -0
  158. package/dist/qualityIntelligence/evidenceAtom.d.ts +35 -0
  159. package/dist/qualityIntelligence/evidenceAtom.d.ts.map +1 -0
  160. package/dist/qualityIntelligence/evidenceAtom.js +29 -0
  161. package/dist/qualityIntelligence/exportBundle.d.ts +28 -0
  162. package/dist/qualityIntelligence/exportBundle.d.ts.map +1 -0
  163. package/dist/qualityIntelligence/exportBundle.js +46 -0
  164. package/dist/qualityIntelligence/handoffEnvelope.d.ts +23 -0
  165. package/dist/qualityIntelligence/handoffEnvelope.d.ts.map +1 -0
  166. package/dist/qualityIntelligence/handoffEnvelope.js +8 -0
  167. package/dist/qualityIntelligence/ids.d.ts +58 -0
  168. package/dist/qualityIntelligence/ids.d.ts.map +1 -0
  169. package/dist/qualityIntelligence/ids.js +93 -0
  170. package/dist/qualityIntelligence/index.d.ts +29 -0
  171. package/dist/qualityIntelligence/index.d.ts.map +1 -0
  172. package/dist/qualityIntelligence/index.js +20 -0
  173. package/dist/qualityIntelligence/reviewRecord.d.ts +19 -0
  174. package/dist/qualityIntelligence/reviewRecord.d.ts.map +1 -0
  175. package/dist/qualityIntelligence/reviewRecord.js +20 -0
  176. package/dist/qualityIntelligence/runPlanAndEvents.d.ts +84 -0
  177. package/dist/qualityIntelligence/runPlanAndEvents.d.ts.map +1 -0
  178. package/dist/qualityIntelligence/runPlanAndEvents.js +51 -0
  179. package/dist/qualityIntelligence/sourceEnvelope.d.ts +77 -0
  180. package/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -0
  181. package/dist/qualityIntelligence/sourceEnvelope.js +118 -0
  182. package/dist/qualityIntelligence/testCaseCandidate.d.ts +21 -0
  183. package/dist/qualityIntelligence/testCaseCandidate.d.ts.map +1 -0
  184. package/dist/qualityIntelligence/testCaseCandidate.js +21 -0
  185. package/dist/qualityIntelligence/testQualityRubric.d.ts +17 -0
  186. package/dist/qualityIntelligence/testQualityRubric.d.ts.map +1 -0
  187. package/dist/qualityIntelligence/testQualityRubric.js +32 -0
  188. package/dist/qualityIntelligence/validationFinding.d.ts +48 -0
  189. package/dist/qualityIntelligence/validationFinding.d.ts.map +1 -0
  190. package/dist/qualityIntelligence/validationFinding.js +36 -0
  191. package/dist/relationships-validation.d.ts +13 -0
  192. package/dist/relationships-validation.d.ts.map +1 -0
  193. package/dist/relationships-validation.js +422 -0
  194. package/dist/relationships.d.ts +79 -0
  195. package/dist/relationships.d.ts.map +1 -0
  196. package/dist/relationships.js +307 -0
  197. package/dist/text-safety.d.ts +7 -0
  198. package/dist/text-safety.d.ts.map +1 -0
  199. package/dist/text-safety.js +58 -0
  200. package/dist/tools.d.ts +153 -0
  201. package/dist/tools.d.ts.map +1 -0
  202. package/dist/tools.js +118 -0
  203. package/dist/unit-test-events.d.ts +87 -0
  204. package/dist/unit-test-events.d.ts.map +1 -0
  205. package/dist/unit-test-events.js +14 -0
  206. package/dist/verification-summary.d.ts +38 -0
  207. package/dist/verification-summary.d.ts.map +1 -0
  208. package/dist/verification-summary.js +5 -0
  209. package/dist/verification.d.ts +64 -0
  210. package/dist/verification.d.ts.map +1 -0
  211. package/dist/verification.js +13 -0
  212. package/dist/workflow-descriptor.d.ts +21 -0
  213. package/dist/workflow-descriptor.d.ts.map +1 -0
  214. package/dist/workflow-descriptor.js +8 -0
  215. package/dist/workflow-handoff.d.ts +69 -0
  216. package/dist/workflow-handoff.d.ts.map +1 -0
  217. package/dist/workflow-handoff.js +381 -0
  218. package/dist/workspace-descriptors.d.ts +21 -0
  219. package/dist/workspace-descriptors.d.ts.map +1 -0
  220. package/dist/workspace-descriptors.js +180 -0
  221. package/dist/workspace-ui.d.ts +119 -0
  222. package/dist/workspace-ui.d.ts.map +1 -0
  223. package/dist/workspace-ui.js +105 -0
  224. package/dist/workspace.d.ts +104 -0
  225. package/dist/workspace.d.ts.map +1 -0
  226. package/dist/workspace.js +27 -0
  227. package/package.json +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-dirty-close.d.ts","sourceRoot":"","sources":["../src/editor-dirty-close.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAC9B,WAAW,GACX,YAAY,GACZ,aAAa,GACb,cAAc,GACd,aAAa,CAAC;AAElB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;CACzC;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;CACzC,GAAG,sBAAsB,CAMzB"}
@@ -0,0 +1,8 @@
1
+ export function createEditorDirtyCloseIntent(input) {
2
+ const files = [];
3
+ for (const file of input.files) {
4
+ if (file.length > 0 && !files.includes(file))
5
+ files.push(file);
6
+ }
7
+ return { paneId: input.paneId, files, reason: input.reason };
8
+ }
@@ -0,0 +1,18 @@
1
+ import type { EditorDocumentVersion } from "./editor-session.js";
2
+ export declare const EDITOR_HOT_EXIT_SCHEMA_VERSION: 1;
3
+ export declare const EDITOR_HOT_EXIT_TTL_MS: number;
4
+ export interface EditorHotExitSnapshotV1 {
5
+ readonly schemaVersion: typeof EDITOR_HOT_EXIT_SCHEMA_VERSION;
6
+ readonly workspaceRoot: string;
7
+ readonly relativePath: string;
8
+ readonly content: string;
9
+ readonly baseVersion: EditorDocumentVersion | null;
10
+ readonly contentHash: string;
11
+ readonly savedContentHash: string | null;
12
+ readonly updatedAt: number;
13
+ readonly paneId: string;
14
+ readonly windowId: string;
15
+ }
16
+ export declare function isEditorHotExitSnapshotV1(value: unknown): value is EditorHotExitSnapshotV1;
17
+ export declare function editorHotExitSnapshotExpired(snapshot: EditorHotExitSnapshotV1, now: number, ttlMs?: number): boolean;
18
+ //# sourceMappingURL=editor-hot-exit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-hot-exit.d.ts","sourceRoot":"","sources":["../src/editor-hot-exit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,eAAO,MAAM,8BAA8B,EAAG,CAAU,CAAC;AACzD,eAAO,MAAM,sBAAsB,QAA2B,CAAC;AAE/D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,aAAa,EAAE,OAAO,8BAA8B,CAAC;IAC9D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AA+BD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,uBAAuB,CAc1F;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,uBAAuB,EACjC,GAAG,EAAE,MAAM,EACX,KAAK,SAAyB,GAC7B,OAAO,CAET"}
@@ -0,0 +1,42 @@
1
+ export const EDITOR_HOT_EXIT_SCHEMA_VERSION = 1;
2
+ export const EDITOR_HOT_EXIT_TTL_MS = 7 * 24 * 60 * 60 * 1_000;
3
+ function isRecord(value) {
4
+ return typeof value === "object" && value !== null && !Array.isArray(value);
5
+ }
6
+ function isNonEmptyString(value) {
7
+ return typeof value === "string" && value.length > 0;
8
+ }
9
+ function isSha256Hex(value) {
10
+ return typeof value === "string" && /^[a-f0-9]{64}$/u.test(value);
11
+ }
12
+ function isNonNegativeFiniteNumber(value) {
13
+ return typeof value === "number" && Number.isFinite(value) && value >= 0;
14
+ }
15
+ function isNullOr(value, guard) {
16
+ return value === null || guard(value);
17
+ }
18
+ function isDocumentVersion(value) {
19
+ return (isRecord(value) &&
20
+ isNonNegativeFiniteNumber(value.sizeBytes) &&
21
+ isNonNegativeFiniteNumber(value.modifiedAt) &&
22
+ isSha256Hex(value.contentHash));
23
+ }
24
+ export function isEditorHotExitSnapshotV1(value) {
25
+ if (!isRecord(value))
26
+ return false;
27
+ return [
28
+ value.schemaVersion === EDITOR_HOT_EXIT_SCHEMA_VERSION,
29
+ isNonEmptyString(value.workspaceRoot),
30
+ isNonEmptyString(value.relativePath),
31
+ typeof value.content === "string",
32
+ isNullOr(value.baseVersion, isDocumentVersion),
33
+ isSha256Hex(value.contentHash),
34
+ isNullOr(value.savedContentHash, isSha256Hex),
35
+ isNonNegativeFiniteNumber(value.updatedAt),
36
+ isNonEmptyString(value.paneId),
37
+ isNonEmptyString(value.windowId),
38
+ ].every(Boolean);
39
+ }
40
+ export function editorHotExitSnapshotExpired(snapshot, now, ttlMs = EDITOR_HOT_EXIT_TTL_MS) {
41
+ return snapshot.updatedAt + ttlMs < now;
42
+ }
@@ -0,0 +1,70 @@
1
+ import { type LanguageDocumentOverlay, type LanguagePosition, type LanguageRange } from "./language-service.js";
2
+ import type { EditorCompletionContextSelectors, EditorCompletionSource } from "./editor-completion.js";
3
+ import type { CompletionDegradeReason, CompletionInteractionMode, CostClass } from "./gateway.js";
4
+ export declare const EDITOR_INLINE_COMPLETION_SCHEMA_VERSION: "1";
5
+ export type EditorInlineCompletionWireTriggerKind = "automatic" | "explicit";
6
+ export declare const EDITOR_INLINE_COMPLETION_WIRE_TRIGGER_KINDS: readonly EditorInlineCompletionWireTriggerKind[];
7
+ export interface EditorInlineCompletionWireItem {
8
+ readonly insertText: string;
9
+ readonly range?: LanguageRange;
10
+ }
11
+ export interface EditorInlineCompletionWireProvenance {
12
+ readonly sources: readonly EditorCompletionSource[];
13
+ readonly modelMode: CompletionInteractionMode;
14
+ readonly modelId?: string;
15
+ readonly latencyClass?: string;
16
+ readonly degradeReason?: CompletionDegradeReason;
17
+ readonly gatewayPolicyVersion?: string;
18
+ readonly promptHash?: string;
19
+ }
20
+ export interface EditorInlineCompletionWireResponse {
21
+ readonly schemaVersion: typeof EDITOR_INLINE_COMPLETION_SCHEMA_VERSION;
22
+ readonly items: readonly EditorInlineCompletionWireItem[];
23
+ readonly provenance: EditorInlineCompletionWireProvenance;
24
+ }
25
+ export interface EditorInlineCompletionWireRequest {
26
+ readonly schemaVersion: typeof EDITOR_INLINE_COMPLETION_SCHEMA_VERSION;
27
+ readonly root: string;
28
+ readonly document: LanguageDocumentOverlay;
29
+ readonly position: LanguagePosition;
30
+ readonly triggerKind: EditorInlineCompletionWireTriggerKind;
31
+ readonly contextBudgetBytes: number;
32
+ readonly context?: EditorCompletionContextSelectors;
33
+ readonly maxCostClass?: CostClass;
34
+ readonly maxOutputTokens?: number;
35
+ }
36
+ export declare const EDITOR_INLINE_COMPLETION_TELEMETRY_SCHEMA_VERSION: "1";
37
+ export interface EditorInlineCompletionTelemetryReport {
38
+ readonly schemaVersion: typeof EDITOR_INLINE_COMPLETION_TELEMETRY_SCHEMA_VERSION;
39
+ readonly root: string;
40
+ readonly offered: number;
41
+ readonly shown: number;
42
+ readonly accepted: number;
43
+ readonly rejected: number;
44
+ readonly ignored: number;
45
+ readonly partiallyAccepted: number;
46
+ readonly requestCount: number;
47
+ readonly requestLatencyMsP50: number;
48
+ readonly requestLatencyMsP95: number;
49
+ }
50
+ export interface EditorInlineCompletionParseOk {
51
+ readonly ok: true;
52
+ readonly value: EditorInlineCompletionWireRequest;
53
+ }
54
+ export interface EditorInlineCompletionParseFail {
55
+ readonly ok: false;
56
+ readonly errors: readonly string[];
57
+ }
58
+ export type EditorInlineCompletionParse = EditorInlineCompletionParseOk | EditorInlineCompletionParseFail;
59
+ export declare function parseEditorInlineCompletionRequest(value: unknown): EditorInlineCompletionParse;
60
+ export interface EditorInlineCompletionTelemetryParseOk {
61
+ readonly ok: true;
62
+ readonly value: EditorInlineCompletionTelemetryReport;
63
+ }
64
+ export interface EditorInlineCompletionTelemetryParseFail {
65
+ readonly ok: false;
66
+ readonly errors: readonly string[];
67
+ }
68
+ export type EditorInlineCompletionTelemetryParse = EditorInlineCompletionTelemetryParseOk | EditorInlineCompletionTelemetryParseFail;
69
+ export declare function parseEditorInlineCompletionTelemetry(value: unknown): EditorInlineCompletionTelemetryParse;
70
+ //# sourceMappingURL=editor-inline-completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-inline-completion.d.ts","sourceRoot":"","sources":["../src/editor-inline-completion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ // Editor inline-completion (ghost-text) WIRE contract (Issue #1200, Epic #1189, ADR-0042 D5/D6).
2
+ // These are the request/response shapes the `POST /api/editor/inline-completion` BFF route consumes
3
+ // and emits. The route is the governed seam between the browser-tier `@oscharko-dev/keiko-editor`
4
+ // Monaco inline-completion provider (which renders ghost text only) and the server-owned, gated
5
+ // model-assisted infilling source: an aligned ("instruct"/"edit-tuned") suffix-aware (FIM) model
6
+ // elected by the completion-model selection (#1210) and enriched with governed coding context
7
+ // (#1211, `purpose: "inline"`). Inline completion is model-only: unlike the #1199 completion gateway
8
+ // there is no deterministic ghost-text tier — when no governed FIM model is usable (or policy
9
+ // disables the feature) the route returns zero items and the editor falls back to the deterministic
10
+ // language-service completion gateway (#1199), never a silent ungoverned model (ADR-0042 D5).
11
+ //
12
+ // Content boundary: the REQUEST necessarily carries the in-editor buffer text (the overlay the model
13
+ // infills, prefix + suffix around the cursor), exactly like the language-service (#1198) and
14
+ // completion (#1199) requests — it is the user's own buffer travelling over the loopback BFF, never
15
+ // logged. The RESPONSE is content-free apart from `insertText`, which is the reviewable ghost-text
16
+ // continuation the user explicitly accepts into their own buffer: no raw prompt, no raw model
17
+ // reasoning, no retrieved excerpt, no secret. Provenance carries only ids, hashes, enum literals, and
18
+ // counts (EU AI Act Reg. (EU) 2024/1689 Art. 12 record-keeping). The acceptance/rejection telemetry
19
+ // report is purely counts — no buffer text, no insert text, no prompt.
20
+ //
21
+ // Leaf-package rules (ADR-0019): pure types and frozen const tables plus throw-free validators only.
22
+ // No filesystem, no clock, no crypto, no randomness, and no imports of other `@oscharko-dev/keiko-*`
23
+ // packages. Geometry, the document-overlay shape, the coding-context selectors, and the completion
24
+ // source/mode/degrade vocabularies are reused from the sibling editor contracts so the inline tier
25
+ // shares one stable, content-free provenance model with the completion gateway.
26
+ import { isLanguageDocumentOverlay, isLanguagePosition, } from "./language-service.js";
27
+ // Schema version for the inline-completion envelope. Bump as a new string member when the shape
28
+ // changes incompatibly; consumers pin against the literal to detect skew.
29
+ export const EDITOR_INLINE_COMPLETION_SCHEMA_VERSION = "1";
30
+ export const EDITOR_INLINE_COMPLETION_WIRE_TRIGGER_KINDS = ["automatic", "explicit"];
31
+ // ─── Content-free acceptance/rejection telemetry (Acceptance Criterion 6) ──────────────────────────
32
+ // The browser-tier inline-completion bridge accumulates these counts from Monaco's content-free
33
+ // lifecycle callbacks (shown / partial-accept / end-of-lifetime accepted|rejected|ignored) plus
34
+ // request latency aggregates, and the host posts a cumulative snapshot to
35
+ // `POST /api/editor/inline-completion/telemetry`, which records it as content-free evidence. There is
36
+ // NO code content here — only counts, latency numbers, and the workspace root.
37
+ export const EDITOR_INLINE_COMPLETION_TELEMETRY_SCHEMA_VERSION = "1";
38
+ function isRecord(value) {
39
+ return typeof value === "object" && value !== null && !Array.isArray(value);
40
+ }
41
+ function isNonEmptyString(value) {
42
+ return typeof value === "string" && value.length > 0;
43
+ }
44
+ function isNonNegativeInteger(value) {
45
+ return typeof value === "number" && Number.isInteger(value) && value >= 0;
46
+ }
47
+ function isPositiveInteger(value) {
48
+ return typeof value === "number" && Number.isInteger(value) && value > 0;
49
+ }
50
+ function isWireTriggerKind(value) {
51
+ return (typeof value === "string" &&
52
+ EDITOR_INLINE_COMPLETION_WIRE_TRIGGER_KINDS.includes(value));
53
+ }
54
+ function isCostClass(value) {
55
+ return value === "low" || value === "medium" || value === "high";
56
+ }
57
+ function isStringArray(value) {
58
+ return Array.isArray(value) && value.every((entry) => typeof entry === "string");
59
+ }
60
+ // Collects the optional, content-bearing context selectors (identical invariants to the completion
61
+ // gateway). Unknown-typed fields are rejected so a malformed selector cannot silently widen
62
+ // retrieval; an absent `context` is valid (repository search only for the `inline` purpose).
63
+ function collectContextErrors(context, errors) {
64
+ if (context === undefined) {
65
+ return;
66
+ }
67
+ if (!isRecord(context)) {
68
+ errors.push("context must be an object when provided");
69
+ return;
70
+ }
71
+ for (const field of ["queryText", "symbol", "capsuleId", "capsuleSetId"]) {
72
+ if (context[field] !== undefined && typeof context[field] !== "string") {
73
+ errors.push(`context.${field} must be a string when provided`);
74
+ }
75
+ }
76
+ if (context.changedFiles !== undefined && !isStringArray(context.changedFiles)) {
77
+ errors.push("context.changedFiles must be an array of strings when provided");
78
+ }
79
+ if (context.capsuleId !== undefined && context.capsuleSetId !== undefined) {
80
+ errors.push("context must not set both capsuleId and capsuleSetId");
81
+ }
82
+ }
83
+ function buildContextSelectors(context) {
84
+ return {
85
+ ...(typeof context.queryText === "string" ? { queryText: context.queryText } : {}),
86
+ ...(typeof context.symbol === "string" ? { symbol: context.symbol } : {}),
87
+ ...(isStringArray(context.changedFiles) ? { changedFiles: context.changedFiles } : {}),
88
+ ...(typeof context.capsuleId === "string" ? { capsuleId: context.capsuleId } : {}),
89
+ ...(typeof context.capsuleSetId === "string" ? { capsuleSetId: context.capsuleSetId } : {}),
90
+ };
91
+ }
92
+ // Collects every field-level invariant error in fixed order (kept separate from the assembly step so
93
+ // the parser entry point stays low-complexity).
94
+ function collectRequestErrors(value) {
95
+ const errors = [];
96
+ if (!isNonEmptyString(value.root)) {
97
+ errors.push("root must be a non-empty string");
98
+ }
99
+ if (!isLanguageDocumentOverlay(value.document)) {
100
+ errors.push("document must be { path, languageId, text }");
101
+ }
102
+ if (!isLanguagePosition(value.position)) {
103
+ errors.push("position must be { line, character }");
104
+ }
105
+ if (!isWireTriggerKind(value.triggerKind)) {
106
+ errors.push(`triggerKind must be one of: ${EDITOR_INLINE_COMPLETION_WIRE_TRIGGER_KINDS.join(", ")}`);
107
+ }
108
+ if (!isNonNegativeInteger(value.contextBudgetBytes)) {
109
+ errors.push("contextBudgetBytes must be a non-negative integer");
110
+ }
111
+ if (value.maxCostClass !== undefined && !isCostClass(value.maxCostClass)) {
112
+ errors.push("maxCostClass must be one of: low, medium, high");
113
+ }
114
+ if (value.maxOutputTokens !== undefined && !isPositiveInteger(value.maxOutputTokens)) {
115
+ errors.push("maxOutputTokens must be a positive integer when provided");
116
+ }
117
+ collectContextErrors(value.context, errors);
118
+ return errors;
119
+ }
120
+ // Validates an `unknown` payload into an EditorInlineCompletionWireRequest, reporting one error per
121
+ // failed invariant. The BFF uses this to reject a malformed request with 400 INVALID_REQUEST.
122
+ export function parseEditorInlineCompletionRequest(value) {
123
+ if (!isRecord(value)) {
124
+ return { ok: false, errors: ["request must be an object"] };
125
+ }
126
+ const errors = collectRequestErrors(value);
127
+ if (errors.length > 0) {
128
+ return { ok: false, errors };
129
+ }
130
+ const context = isRecord(value.context) ? buildContextSelectors(value.context) : undefined;
131
+ return {
132
+ ok: true,
133
+ value: {
134
+ schemaVersion: EDITOR_INLINE_COMPLETION_SCHEMA_VERSION,
135
+ root: value.root,
136
+ document: value.document,
137
+ position: value.position,
138
+ triggerKind: value.triggerKind,
139
+ contextBudgetBytes: value.contextBudgetBytes,
140
+ ...(context !== undefined && Object.keys(context).length > 0 ? { context } : {}),
141
+ ...(isCostClass(value.maxCostClass) ? { maxCostClass: value.maxCostClass } : {}),
142
+ ...(isPositiveInteger(value.maxOutputTokens)
143
+ ? { maxOutputTokens: value.maxOutputTokens }
144
+ : {}),
145
+ },
146
+ };
147
+ }
148
+ const TELEMETRY_COUNT_FIELDS = [
149
+ "offered",
150
+ "shown",
151
+ "accepted",
152
+ "rejected",
153
+ "ignored",
154
+ "partiallyAccepted",
155
+ ];
156
+ const TELEMETRY_LATENCY_FIELDS = [
157
+ "requestCount",
158
+ "requestLatencyMsP50",
159
+ "requestLatencyMsP95",
160
+ ];
161
+ function collectTelemetryErrors(value) {
162
+ const errors = [];
163
+ if (!isNonEmptyString(value.root)) {
164
+ errors.push("root must be a non-empty string");
165
+ }
166
+ for (const field of TELEMETRY_COUNT_FIELDS) {
167
+ if (!isNonNegativeInteger(value[field])) {
168
+ errors.push(`${field} must be a non-negative integer`);
169
+ }
170
+ }
171
+ for (const field of TELEMETRY_LATENCY_FIELDS) {
172
+ if (value[field] !== undefined && !isNonNegativeInteger(value[field])) {
173
+ errors.push(`${field} must be a non-negative integer when provided`);
174
+ }
175
+ }
176
+ if (isNonNegativeInteger(value.requestLatencyMsP50) &&
177
+ isNonNegativeInteger(value.requestLatencyMsP95) &&
178
+ value.requestLatencyMsP95 < value.requestLatencyMsP50) {
179
+ errors.push("requestLatencyMsP95 must be greater than or equal to requestLatencyMsP50");
180
+ }
181
+ return errors;
182
+ }
183
+ function telemetryMetric(value, field) {
184
+ const metric = value[field];
185
+ return isNonNegativeInteger(metric) ? metric : 0;
186
+ }
187
+ function buildTelemetryReport(value) {
188
+ return {
189
+ schemaVersion: EDITOR_INLINE_COMPLETION_TELEMETRY_SCHEMA_VERSION,
190
+ root: value.root,
191
+ offered: value.offered,
192
+ shown: value.shown,
193
+ accepted: value.accepted,
194
+ rejected: value.rejected,
195
+ ignored: value.ignored,
196
+ partiallyAccepted: value.partiallyAccepted,
197
+ requestCount: telemetryMetric(value, "requestCount"),
198
+ requestLatencyMsP50: telemetryMetric(value, "requestLatencyMsP50"),
199
+ requestLatencyMsP95: telemetryMetric(value, "requestLatencyMsP95"),
200
+ };
201
+ }
202
+ // Validates an `unknown` payload into a content-free EditorInlineCompletionTelemetryReport. Every
203
+ // metric must be a non-negative integer; the report carries only counts, latency aggregates, and the
204
+ // workspace root. Latency fields default to 0 so older cumulative telemetry snapshots do not break
205
+ // during rollout; current clients always emit them.
206
+ export function parseEditorInlineCompletionTelemetry(value) {
207
+ if (!isRecord(value)) {
208
+ return { ok: false, errors: ["telemetry report must be an object"] };
209
+ }
210
+ const errors = collectTelemetryErrors(value);
211
+ if (errors.length > 0) {
212
+ return { ok: false, errors };
213
+ }
214
+ return { ok: true, value: buildTelemetryReport(value) };
215
+ }
@@ -0,0 +1,105 @@
1
+ export declare const EDITOR_LAYOUT_SCHEMA_VERSION: 2;
2
+ export type EditorSplitDirection = "row" | "column";
3
+ export type EditorSplitDropZone = "left" | "right" | "top" | "bottom" | "center";
4
+ export interface EditorLayoutPaneNode {
5
+ readonly type: "pane";
6
+ readonly paneId: string;
7
+ }
8
+ export interface EditorLayoutSplitNode {
9
+ readonly type: "split";
10
+ readonly id: string;
11
+ readonly direction: EditorSplitDirection;
12
+ readonly ratio: number;
13
+ readonly first: EditorLayoutNode;
14
+ readonly second: EditorLayoutNode;
15
+ }
16
+ export type EditorLayoutNode = EditorLayoutPaneNode | EditorLayoutSplitNode;
17
+ export interface EditorPaneStateV2 {
18
+ readonly id: string;
19
+ readonly openFiles: readonly string[];
20
+ readonly activeFile: string;
21
+ readonly tabOrder: readonly string[];
22
+ }
23
+ export interface EditorLayoutStateV2 {
24
+ readonly schemaVersion: typeof EDITOR_LAYOUT_SCHEMA_VERSION;
25
+ readonly root: string;
26
+ readonly activePaneId: string;
27
+ readonly tree: EditorLayoutNode;
28
+ readonly panes: Readonly<Record<string, EditorPaneStateV2>>;
29
+ readonly sidebarWidth: number;
30
+ readonly sidebarCollapsed: boolean;
31
+ }
32
+ export interface EditorTabDragIntent {
33
+ readonly file: string;
34
+ readonly fromPaneId: string;
35
+ readonly toPaneId: string;
36
+ readonly zone: EditorSplitDropZone;
37
+ readonly targetIndex?: number | undefined;
38
+ }
39
+ export type EditorLayoutAction = {
40
+ readonly type: "open-file";
41
+ readonly paneId: string;
42
+ readonly file: string;
43
+ } | {
44
+ readonly type: "select-file";
45
+ readonly paneId: string;
46
+ readonly file: string;
47
+ } | {
48
+ readonly type: "close-tab";
49
+ readonly paneId: string;
50
+ readonly file: string;
51
+ } | {
52
+ readonly type: "close-pane";
53
+ readonly paneId: string;
54
+ } | {
55
+ readonly type: "set-active-pane";
56
+ readonly paneId: string;
57
+ } | {
58
+ readonly type: "reorder-tab";
59
+ readonly paneId: string;
60
+ readonly file: string;
61
+ readonly targetIndex: number;
62
+ } | {
63
+ readonly type: "move-tab";
64
+ readonly fromPaneId: string;
65
+ readonly toPaneId: string;
66
+ readonly file: string;
67
+ readonly targetIndex?: number | undefined;
68
+ } | {
69
+ readonly type: "drop-tab";
70
+ readonly intent: EditorTabDragIntent;
71
+ } | {
72
+ readonly type: "split-pane";
73
+ readonly paneId: string;
74
+ readonly direction: EditorSplitDirection;
75
+ readonly file?: string | undefined;
76
+ } | {
77
+ readonly type: "resize-split";
78
+ readonly splitId: string;
79
+ readonly ratio: number;
80
+ } | {
81
+ readonly type: "set-sidebar";
82
+ readonly width?: number | undefined;
83
+ readonly collapsed?: boolean | undefined;
84
+ } | {
85
+ readonly type: "replace-root";
86
+ readonly root: string;
87
+ readonly sidebarWidth?: number | undefined;
88
+ };
89
+ export interface CreateEditorLayoutStateV2Input {
90
+ readonly root: string;
91
+ readonly file: string;
92
+ readonly openFiles: readonly string[];
93
+ readonly layoutJson?: string | undefined;
94
+ readonly defaultSidebarWidth: number;
95
+ readonly minSidebarWidth: number;
96
+ readonly maxSidebarWidth: number;
97
+ }
98
+ export declare function createEditorLayoutStateV2(input: CreateEditorLayoutStateV2Input): EditorLayoutStateV2;
99
+ export declare function serializeEditorLayoutStateV2(layout: EditorLayoutStateV2): string;
100
+ export declare function editorLayoutPaneIds(layout: EditorLayoutStateV2): readonly string[];
101
+ export declare function editorLayoutPanes(layout: EditorLayoutStateV2): readonly EditorPaneStateV2[];
102
+ export declare function activeEditorPane(layout: EditorLayoutStateV2): EditorPaneStateV2;
103
+ export declare function editorLayoutReducer(layout: EditorLayoutStateV2, action: EditorLayoutAction): EditorLayoutStateV2;
104
+ export declare function editorLayoutOpenFiles(layout: EditorLayoutStateV2): readonly string[];
105
+ //# sourceMappingURL=editor-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-layout.d.ts","sourceRoot":"","sources":["../src/editor-layout.ts"],"names":[],"mappings":"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"}