@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.
- package/dist/.tsbuildinfo +1 -0
- package/dist/bff-wire.d.ts +661 -0
- package/dist/bff-wire.d.ts.map +1 -0
- package/dist/bff-wire.js +102 -0
- package/dist/bug-investigation-events.d.ts +92 -0
- package/dist/bug-investigation-events.d.ts.map +1 -0
- package/dist/bug-investigation-events.js +18 -0
- package/dist/coding-context.d.ts +76 -0
- package/dist/coding-context.d.ts.map +1 -0
- package/dist/coding-context.js +158 -0
- package/dist/connected-context.d.ts +174 -0
- package/dist/connected-context.d.ts.map +1 -0
- package/dist/connected-context.js +636 -0
- package/dist/conversation-budget.d.ts +37 -0
- package/dist/conversation-budget.d.ts.map +1 -0
- package/dist/conversation-budget.js +97 -0
- package/dist/editor-agent.d.ts +131 -0
- package/dist/editor-agent.d.ts.map +1 -0
- package/dist/editor-agent.js +197 -0
- package/dist/editor-completion.d.ts +62 -0
- package/dist/editor-completion.d.ts.map +1 -0
- package/dist/editor-completion.js +147 -0
- package/dist/editor-dirty-close.d.ts +17 -0
- package/dist/editor-dirty-close.d.ts.map +1 -0
- package/dist/editor-dirty-close.js +8 -0
- package/dist/editor-hot-exit.d.ts +18 -0
- package/dist/editor-hot-exit.d.ts.map +1 -0
- package/dist/editor-hot-exit.js +42 -0
- package/dist/editor-inline-completion.d.ts +70 -0
- package/dist/editor-inline-completion.d.ts.map +1 -0
- package/dist/editor-inline-completion.js +215 -0
- package/dist/editor-layout.d.ts +105 -0
- package/dist/editor-layout.d.ts.map +1 -0
- package/dist/editor-layout.js +479 -0
- package/dist/editor-patch-apply.d.ts +77 -0
- package/dist/editor-patch-apply.d.ts.map +1 -0
- package/dist/editor-patch-apply.js +122 -0
- package/dist/editor-session.d.ts +31 -0
- package/dist/editor-session.d.ts.map +1 -0
- package/dist/editor-session.js +75 -0
- package/dist/editor-test-generation.d.ts +104 -0
- package/dist/editor-test-generation.d.ts.map +1 -0
- package/dist/editor-test-generation.js +211 -0
- package/dist/evaluations.d.ts +75 -0
- package/dist/evaluations.d.ts.map +1 -0
- package/dist/evaluations.js +16 -0
- package/dist/evidence.d.ts +297 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +9 -0
- package/dist/gateway.d.ts +129 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +66 -0
- package/dist/harness.d.ts +274 -0
- package/dist/harness.d.ts.map +1 -0
- package/dist/harness.js +38 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/language-service.d.ts +145 -0
- package/dist/language-service.d.ts.map +1 -0
- package/dist/language-service.js +161 -0
- package/dist/local-knowledge-large-document-validation.d.ts +7 -0
- package/dist/local-knowledge-large-document-validation.d.ts.map +1 -0
- package/dist/local-knowledge-large-document-validation.js +161 -0
- package/dist/local-knowledge-large-document.d.ts +113 -0
- package/dist/local-knowledge-large-document.d.ts.map +1 -0
- package/dist/local-knowledge-large-document.js +142 -0
- package/dist/local-knowledge-paths.d.ts +3 -0
- package/dist/local-knowledge-paths.d.ts.map +1 -0
- package/dist/local-knowledge-paths.js +65 -0
- package/dist/local-knowledge-records.d.ts +190 -0
- package/dist/local-knowledge-records.d.ts.map +1 -0
- package/dist/local-knowledge-records.js +36 -0
- package/dist/local-knowledge-schema-validation.d.ts +19 -0
- package/dist/local-knowledge-schema-validation.d.ts.map +1 -0
- package/dist/local-knowledge-schema-validation.js +115 -0
- package/dist/local-knowledge-schema.d.ts +14 -0
- package/dist/local-knowledge-schema.d.ts.map +1 -0
- package/dist/local-knowledge-schema.js +715 -0
- package/dist/local-knowledge-validation.d.ts +20 -0
- package/dist/local-knowledge-validation.d.ts.map +1 -0
- package/dist/local-knowledge-validation.js +487 -0
- package/dist/local-knowledge.d.ts +158 -0
- package/dist/local-knowledge.d.ts.map +1 -0
- package/dist/local-knowledge.js +63 -0
- package/dist/memory-audit-events.d.ts +73 -0
- package/dist/memory-audit-events.d.ts.map +1 -0
- package/dist/memory-audit-events.js +44 -0
- package/dist/memory-audit-validation.d.ts +4 -0
- package/dist/memory-audit-validation.d.ts.map +1 -0
- package/dist/memory-audit-validation.js +151 -0
- package/dist/memory-barrel.d.ts +15 -0
- package/dist/memory-barrel.d.ts.map +1 -0
- package/dist/memory-barrel.js +20 -0
- package/dist/memory-internal.d.ts +26 -0
- package/dist/memory-internal.d.ts.map +1 -0
- package/dist/memory-internal.js +104 -0
- package/dist/memory-operations-validation.d.ts +12 -0
- package/dist/memory-operations-validation.d.ts.map +1 -0
- package/dist/memory-operations-validation.js +267 -0
- package/dist/memory-operations.d.ts +156 -0
- package/dist/memory-operations.d.ts.map +1 -0
- package/dist/memory-operations.js +29 -0
- package/dist/memory-record-validation.d.ts +10 -0
- package/dist/memory-record-validation.d.ts.map +1 -0
- package/dist/memory-record-validation.js +101 -0
- package/dist/memory-records.d.ts +66 -0
- package/dist/memory-records.d.ts.map +1 -0
- package/dist/memory-records.js +22 -0
- package/dist/memory-retrieval-validation.d.ts +6 -0
- package/dist/memory-retrieval-validation.d.ts.map +1 -0
- package/dist/memory-retrieval-validation.js +108 -0
- package/dist/memory-validation.d.ts +31 -0
- package/dist/memory-validation.d.ts.map +1 -0
- package/dist/memory-validation.js +318 -0
- package/dist/memory-workflow-port.d.ts +26 -0
- package/dist/memory-workflow-port.d.ts.map +1 -0
- package/dist/memory-workflow-port.js +13 -0
- package/dist/memory.d.ts +81 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +104 -0
- package/dist/prompt-enhancer-analyzer.d.ts +7 -0
- package/dist/prompt-enhancer-analyzer.d.ts.map +1 -0
- package/dist/prompt-enhancer-analyzer.js +745 -0
- package/dist/prompt-enhancer-bff.d.ts +67 -0
- package/dist/prompt-enhancer-bff.d.ts.map +1 -0
- package/dist/prompt-enhancer-bff.js +156 -0
- package/dist/prompt-enhancer-critic.d.ts +46 -0
- package/dist/prompt-enhancer-critic.d.ts.map +1 -0
- package/dist/prompt-enhancer-critic.js +35 -0
- package/dist/prompt-enhancer-grounding.d.ts +19 -0
- package/dist/prompt-enhancer-grounding.d.ts.map +1 -0
- package/dist/prompt-enhancer-grounding.js +235 -0
- package/dist/prompt-enhancer-safety.d.ts +66 -0
- package/dist/prompt-enhancer-safety.d.ts.map +1 -0
- package/dist/prompt-enhancer-safety.js +446 -0
- package/dist/prompt-enhancer-validation.d.ts +28 -0
- package/dist/prompt-enhancer-validation.d.ts.map +1 -0
- package/dist/prompt-enhancer-validation.js +931 -0
- package/dist/prompt-enhancer.d.ts +184 -0
- package/dist/prompt-enhancer.d.ts.map +1 -0
- package/dist/prompt-enhancer.js +350 -0
- package/dist/qualityIntelligence/assertNever.d.ts +2 -0
- package/dist/qualityIntelligence/assertNever.d.ts.map +1 -0
- package/dist/qualityIntelligence/assertNever.js +7 -0
- package/dist/qualityIntelligence/auditSummary.d.ts +25 -0
- package/dist/qualityIntelligence/auditSummary.d.ts.map +1 -0
- package/dist/qualityIntelligence/auditSummary.js +7 -0
- package/dist/qualityIntelligence/bffWire.d.ts +356 -0
- package/dist/qualityIntelligence/bffWire.d.ts.map +1 -0
- package/dist/qualityIntelligence/bffWire.js +22 -0
- package/dist/qualityIntelligence/coverageMap.d.ts +21 -0
- package/dist/qualityIntelligence/coverageMap.d.ts.map +1 -0
- package/dist/qualityIntelligence/coverageMap.js +29 -0
- package/dist/qualityIntelligence/editableRevision.d.ts +21 -0
- package/dist/qualityIntelligence/editableRevision.d.ts.map +1 -0
- package/dist/qualityIntelligence/editableRevision.js +8 -0
- package/dist/qualityIntelligence/evidenceAtom.d.ts +35 -0
- package/dist/qualityIntelligence/evidenceAtom.d.ts.map +1 -0
- package/dist/qualityIntelligence/evidenceAtom.js +29 -0
- package/dist/qualityIntelligence/exportBundle.d.ts +28 -0
- package/dist/qualityIntelligence/exportBundle.d.ts.map +1 -0
- package/dist/qualityIntelligence/exportBundle.js +46 -0
- package/dist/qualityIntelligence/handoffEnvelope.d.ts +23 -0
- package/dist/qualityIntelligence/handoffEnvelope.d.ts.map +1 -0
- package/dist/qualityIntelligence/handoffEnvelope.js +8 -0
- package/dist/qualityIntelligence/ids.d.ts +58 -0
- package/dist/qualityIntelligence/ids.d.ts.map +1 -0
- package/dist/qualityIntelligence/ids.js +93 -0
- package/dist/qualityIntelligence/index.d.ts +29 -0
- package/dist/qualityIntelligence/index.d.ts.map +1 -0
- package/dist/qualityIntelligence/index.js +20 -0
- package/dist/qualityIntelligence/reviewRecord.d.ts +19 -0
- package/dist/qualityIntelligence/reviewRecord.d.ts.map +1 -0
- package/dist/qualityIntelligence/reviewRecord.js +20 -0
- package/dist/qualityIntelligence/runPlanAndEvents.d.ts +84 -0
- package/dist/qualityIntelligence/runPlanAndEvents.d.ts.map +1 -0
- package/dist/qualityIntelligence/runPlanAndEvents.js +51 -0
- package/dist/qualityIntelligence/sourceEnvelope.d.ts +77 -0
- package/dist/qualityIntelligence/sourceEnvelope.d.ts.map +1 -0
- package/dist/qualityIntelligence/sourceEnvelope.js +118 -0
- package/dist/qualityIntelligence/testCaseCandidate.d.ts +21 -0
- package/dist/qualityIntelligence/testCaseCandidate.d.ts.map +1 -0
- package/dist/qualityIntelligence/testCaseCandidate.js +21 -0
- package/dist/qualityIntelligence/testQualityRubric.d.ts +17 -0
- package/dist/qualityIntelligence/testQualityRubric.d.ts.map +1 -0
- package/dist/qualityIntelligence/testQualityRubric.js +32 -0
- package/dist/qualityIntelligence/validationFinding.d.ts +48 -0
- package/dist/qualityIntelligence/validationFinding.d.ts.map +1 -0
- package/dist/qualityIntelligence/validationFinding.js +36 -0
- package/dist/relationships-validation.d.ts +13 -0
- package/dist/relationships-validation.d.ts.map +1 -0
- package/dist/relationships-validation.js +422 -0
- package/dist/relationships.d.ts +79 -0
- package/dist/relationships.d.ts.map +1 -0
- package/dist/relationships.js +307 -0
- package/dist/text-safety.d.ts +7 -0
- package/dist/text-safety.d.ts.map +1 -0
- package/dist/text-safety.js +58 -0
- package/dist/tools.d.ts +153 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +118 -0
- package/dist/unit-test-events.d.ts +87 -0
- package/dist/unit-test-events.d.ts.map +1 -0
- package/dist/unit-test-events.js +14 -0
- package/dist/verification-summary.d.ts +38 -0
- package/dist/verification-summary.d.ts.map +1 -0
- package/dist/verification-summary.js +5 -0
- package/dist/verification.d.ts +64 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +13 -0
- package/dist/workflow-descriptor.d.ts +21 -0
- package/dist/workflow-descriptor.d.ts.map +1 -0
- package/dist/workflow-descriptor.js +8 -0
- package/dist/workflow-handoff.d.ts +69 -0
- package/dist/workflow-handoff.d.ts.map +1 -0
- package/dist/workflow-handoff.js +381 -0
- package/dist/workspace-descriptors.d.ts +21 -0
- package/dist/workspace-descriptors.d.ts.map +1 -0
- package/dist/workspace-descriptors.js +180 -0
- package/dist/workspace-ui.d.ts +119 -0
- package/dist/workspace-ui.d.ts.map +1 -0
- package/dist/workspace-ui.js +105 -0
- package/dist/workspace.d.ts +104 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +27 -0
- 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,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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"}
|