@oscharko-dev/keiko-server 0.2.8 → 0.2.9
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 -1
- package/dist/chat-handlers.d.ts +18 -2
- package/dist/chat-handlers.d.ts.map +1 -1
- package/dist/chat-handlers.js +185 -3
- package/dist/command-runner-errors.d.ts +17 -0
- package/dist/command-runner-errors.d.ts.map +1 -0
- package/dist/command-runner-errors.js +37 -0
- package/dist/command-runner-evidence.d.ts +23 -0
- package/dist/command-runner-evidence.d.ts.map +1 -0
- package/dist/command-runner-evidence.js +69 -0
- package/dist/command-runner-routes.d.ts +7 -0
- package/dist/command-runner-routes.d.ts.map +1 -0
- package/dist/command-runner-routes.js +175 -0
- package/dist/command-runner.d.ts +29 -0
- package/dist/command-runner.d.ts.map +1 -0
- package/dist/command-runner.js +348 -0
- package/dist/conversation-prompt.d.ts +2 -2
- package/dist/conversation-prompt.d.ts.map +1 -1
- package/dist/conversation-prompt.js +17 -1
- package/dist/csp.d.ts.map +1 -1
- package/dist/csp.js +3 -0
- package/dist/deps.d.ts +27 -1
- package/dist/deps.d.ts.map +1 -1
- package/dist/deps.js +288 -13
- package/dist/discussion-prompt.d.ts +4 -0
- package/dist/discussion-prompt.d.ts.map +1 -0
- package/dist/discussion-prompt.js +19 -0
- package/dist/editor/agentActionAudit.d.ts +18 -0
- package/dist/editor/agentActionAudit.d.ts.map +1 -0
- package/dist/editor/agentActionAudit.js +80 -0
- package/dist/editor/agentRoutes.d.ts +1 -0
- package/dist/editor/agentRoutes.d.ts.map +1 -1
- package/dist/editor/agentRoutes.js +292 -55
- package/dist/editor/agentSessionRegistry.d.ts +35 -0
- package/dist/editor/agentSessionRegistry.d.ts.map +1 -0
- package/dist/editor/agentSessionRegistry.js +243 -0
- package/dist/editor/completionRoutes.d.ts.map +1 -1
- package/dist/editor/completionRoutes.js +5 -10
- package/dist/editor/languageRoutes.d.ts +12 -1
- package/dist/editor/languageRoutes.d.ts.map +1 -1
- package/dist/editor/languageRoutes.js +71 -8
- package/dist/editor/languageService.d.ts +3 -2
- package/dist/editor/languageService.d.ts.map +1 -1
- package/dist/editor/languageService.js +41 -3
- package/dist/editor/languageServiceHost.d.ts.map +1 -1
- package/dist/editor/languageServiceHost.js +2 -2
- package/dist/editor/lsp/hostLanguageOperation.d.ts +17 -0
- package/dist/editor/lsp/hostLanguageOperation.d.ts.map +1 -0
- package/dist/editor/lsp/hostLanguageOperation.js +436 -0
- package/dist/editor/lsp/hostLanguageProviders.d.ts +26 -0
- package/dist/editor/lsp/hostLanguageProviders.d.ts.map +1 -0
- package/dist/editor/lsp/hostLanguageProviders.js +161 -0
- package/dist/editor/lsp/lspFrameCodec.d.ts +13 -0
- package/dist/editor/lsp/lspFrameCodec.d.ts.map +1 -0
- package/dist/editor/lsp/lspFrameCodec.js +164 -0
- package/dist/editor/lsp/lspJsonRpcClient.d.ts +34 -0
- package/dist/editor/lsp/lspJsonRpcClient.d.ts.map +1 -0
- package/dist/editor/lsp/lspJsonRpcClient.js +173 -0
- package/dist/editor/lsp/lspLanguageProvider.d.ts +7 -0
- package/dist/editor/lsp/lspLanguageProvider.d.ts.map +1 -0
- package/dist/editor/lsp/lspLanguageProvider.js +29 -0
- package/dist/editor/lsp/lspLifecycleLedger.d.ts +5 -0
- package/dist/editor/lsp/lspLifecycleLedger.d.ts.map +1 -0
- package/dist/editor/lsp/lspLifecycleLedger.js +37 -0
- package/dist/editor/lsp/lspNodeAdapter.d.ts +31 -0
- package/dist/editor/lsp/lspNodeAdapter.d.ts.map +1 -0
- package/dist/editor/lsp/lspNodeAdapter.js +230 -0
- package/dist/editor/lsp/lspProcessManager.d.ts +24 -0
- package/dist/editor/lsp/lspProcessManager.d.ts.map +1 -0
- package/dist/editor/lsp/lspProcessManager.js +255 -0
- package/dist/editor/lsp/lspRestartThrottle.d.ts +6 -0
- package/dist/editor/lsp/lspRestartThrottle.d.ts.map +1 -0
- package/dist/editor/lsp/lspRestartThrottle.js +24 -0
- package/dist/editor/lsp/lspStatusRoute.d.ts +8 -0
- package/dist/editor/lsp/lspStatusRoute.d.ts.map +1 -0
- package/dist/editor/lsp/lspStatusRoute.js +22 -0
- package/dist/editor/lsp/lspTransport.d.ts +19 -0
- package/dist/editor/lsp/lspTransport.d.ts.map +1 -0
- package/dist/editor/lsp/lspTransport.js +55 -0
- package/dist/editor/lsp/testing/fakeLspProcess.d.ts +23 -0
- package/dist/editor/lsp/testing/fakeLspProcess.d.ts.map +1 -0
- package/dist/editor/lsp/testing/fakeLspProcess.js +132 -0
- package/dist/files.d.ts +45 -0
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +631 -7
- package/dist/gateway-readiness.js +3 -3
- package/dist/gateway-setup.d.ts +2 -0
- package/dist/gateway-setup.d.ts.map +1 -1
- package/dist/gateway-setup.js +275 -11
- package/dist/gitDelivery/actionSheetProjection.d.ts +30 -0
- package/dist/gitDelivery/actionSheetProjection.d.ts.map +1 -0
- package/dist/gitDelivery/actionSheetProjection.js +206 -0
- package/dist/gitDelivery/actionSheetRoutes.d.ts +29 -0
- package/dist/gitDelivery/actionSheetRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/actionSheetRoutes.js +293 -0
- package/dist/gitDelivery/agentOperationsRoutes.d.ts +33 -0
- package/dist/gitDelivery/agentOperationsRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/agentOperationsRoutes.js +405 -0
- package/dist/gitDelivery/commitRoutes.d.ts +23 -0
- package/dist/gitDelivery/commitRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/commitRoutes.js +204 -0
- package/dist/gitDelivery/evidenceRoutes.d.ts +9 -0
- package/dist/gitDelivery/evidenceRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/evidenceRoutes.js +101 -0
- package/dist/gitDelivery/execution.d.ts +38 -0
- package/dist/gitDelivery/execution.d.ts.map +1 -0
- package/dist/gitDelivery/execution.js +117 -0
- package/dist/gitDelivery/localMutationRoutes.d.ts +30 -0
- package/dist/gitDelivery/localMutationRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/localMutationRoutes.js +165 -0
- package/dist/gitDelivery/mergeExecution.d.ts +63 -0
- package/dist/gitDelivery/mergeExecution.d.ts.map +1 -0
- package/dist/gitDelivery/mergeExecution.js +168 -0
- package/dist/gitDelivery/mergeRoutes.d.ts +12 -0
- package/dist/gitDelivery/mergeRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/mergeRoutes.js +218 -0
- package/dist/gitDelivery/mutationEvidenceLedger.d.ts +23 -0
- package/dist/gitDelivery/mutationEvidenceLedger.d.ts.map +1 -0
- package/dist/gitDelivery/mutationEvidenceLedger.js +87 -0
- package/dist/gitDelivery/prExecution.d.ts +54 -0
- package/dist/gitDelivery/prExecution.d.ts.map +1 -0
- package/dist/gitDelivery/prExecution.js +192 -0
- package/dist/gitDelivery/prRoutes.d.ts +12 -0
- package/dist/gitDelivery/prRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/prRoutes.js +256 -0
- package/dist/gitDelivery/pushExecution.d.ts +43 -0
- package/dist/gitDelivery/pushExecution.d.ts.map +1 -0
- package/dist/gitDelivery/pushExecution.js +124 -0
- package/dist/gitDelivery/pushRoutes.d.ts +12 -0
- package/dist/gitDelivery/pushRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/pushRoutes.js +200 -0
- package/dist/gitDelivery/requestGuards.d.ts +15 -0
- package/dist/gitDelivery/requestGuards.d.ts.map +1 -0
- package/dist/gitDelivery/requestGuards.js +97 -0
- package/dist/gitDelivery/syncEvidence.d.ts +37 -0
- package/dist/gitDelivery/syncEvidence.d.ts.map +1 -0
- package/dist/gitDelivery/syncEvidence.js +85 -0
- package/dist/gitDelivery/syncExecution.d.ts +30 -0
- package/dist/gitDelivery/syncExecution.d.ts.map +1 -0
- package/dist/gitDelivery/syncExecution.js +266 -0
- package/dist/gitDelivery/syncRoutes.d.ts +13 -0
- package/dist/gitDelivery/syncRoutes.d.ts.map +1 -0
- package/dist/gitDelivery/syncRoutes.js +200 -0
- package/dist/gitPorcelainStatus.d.ts +15 -0
- package/dist/gitPorcelainStatus.d.ts.map +1 -0
- package/dist/gitPorcelainStatus.js +104 -0
- package/dist/gitRepositoryReads.d.ts +10 -0
- package/dist/gitRepositoryReads.d.ts.map +1 -0
- package/dist/gitRepositoryReads.js +314 -0
- package/dist/gitRepositoryRoutes.d.ts +7 -0
- package/dist/gitRepositoryRoutes.d.ts.map +1 -0
- package/dist/gitRepositoryRoutes.js +221 -0
- package/dist/gitRoutes.d.ts +66 -0
- package/dist/gitRoutes.d.ts.map +1 -0
- package/dist/gitRoutes.js +543 -0
- package/dist/governed-workflow.d.ts +2 -0
- package/dist/governed-workflow.d.ts.map +1 -1
- package/dist/governed-workflow.js +4 -0
- package/dist/grounded-qa.d.ts +11 -0
- package/dist/grounded-qa.d.ts.map +1 -1
- package/dist/grounded-qa.js +13 -4
- package/dist/headers.d.ts +4 -1
- package/dist/headers.d.ts.map +1 -1
- package/dist/headers.js +11 -4
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +1 -1
- package/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
- package/dist/qualityIntelligence/figmaSnapshotRoutes.js +1 -1
- package/dist/read-handlers.d.ts +5 -0
- package/dist/read-handlers.d.ts.map +1 -1
- package/dist/read-handlers.js +57 -1
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +259 -6
- package/dist/run-engine.d.ts.map +1 -1
- package/dist/run-engine.js +3 -0
- package/dist/run-handlers.d.ts.map +1 -1
- package/dist/run-handlers.js +74 -4
- package/dist/run-request.d.ts +11 -0
- package/dist/run-request.d.ts.map +1 -1
- package/dist/run-request.js +158 -10
- package/dist/runtime/capabilityDetector.d.ts +38 -0
- package/dist/runtime/capabilityDetector.d.ts.map +1 -0
- package/dist/runtime/capabilityDetector.js +443 -0
- package/dist/runtime/capabilityRoutes.d.ts +9 -0
- package/dist/runtime/capabilityRoutes.d.ts.map +1 -0
- package/dist/runtime/capabilityRoutes.js +45 -0
- package/dist/runtime/containerEngineDetector.d.ts +17 -0
- package/dist/runtime/containerEngineDetector.d.ts.map +1 -0
- package/dist/runtime/containerEngineDetector.js +222 -0
- package/dist/runtime/containerRoutes.d.ts +8 -0
- package/dist/runtime/containerRoutes.d.ts.map +1 -0
- package/dist/runtime/containerRoutes.js +207 -0
- package/dist/runtime/containerRunner-errors.d.ts +18 -0
- package/dist/runtime/containerRunner-errors.d.ts.map +1 -0
- package/dist/runtime/containerRunner-errors.js +42 -0
- package/dist/runtime/containerRunner-evidence.d.ts +24 -0
- package/dist/runtime/containerRunner-evidence.d.ts.map +1 -0
- package/dist/runtime/containerRunner-evidence.js +74 -0
- package/dist/runtime/containerRunner.d.ts +37 -0
- package/dist/runtime/containerRunner.d.ts.map +1 -0
- package/dist/runtime/containerRunner.js +443 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +24 -4
- package/dist/store/schema.d.ts +1 -1
- package/dist/store/schema.d.ts.map +1 -1
- package/dist/store/schema.js +62 -1
- package/dist/task-workspace/active-store.d.ts +21 -0
- package/dist/task-workspace/active-store.d.ts.map +1 -0
- package/dist/task-workspace/active-store.js +55 -0
- package/dist/task-workspace/authorization.d.ts +7 -0
- package/dist/task-workspace/authorization.d.ts.map +1 -0
- package/dist/task-workspace/authorization.js +54 -0
- package/dist/task-workspace/binding.d.ts +3 -0
- package/dist/task-workspace/binding.d.ts.map +1 -0
- package/dist/task-workspace/binding.js +22 -0
- package/dist/task-workspace/cleanup.d.ts +4 -0
- package/dist/task-workspace/cleanup.d.ts.map +1 -0
- package/dist/task-workspace/cleanup.js +428 -0
- package/dist/task-workspace/errors.d.ts +14 -0
- package/dist/task-workspace/errors.d.ts.map +1 -0
- package/dist/task-workspace/errors.js +81 -0
- package/dist/task-workspace/evidence.d.ts +32 -0
- package/dist/task-workspace/evidence.d.ts.map +1 -0
- package/dist/task-workspace/evidence.js +52 -0
- package/dist/task-workspace/field-safety.d.ts +3 -0
- package/dist/task-workspace/field-safety.d.ts.map +1 -0
- package/dist/task-workspace/field-safety.js +42 -0
- package/dist/task-workspace/health.d.ts +4 -0
- package/dist/task-workspace/health.d.ts.map +1 -0
- package/dist/task-workspace/health.js +163 -0
- package/dist/task-workspace/lifecycle.d.ts +3 -0
- package/dist/task-workspace/lifecycle.d.ts.map +1 -0
- package/dist/task-workspace/lifecycle.js +248 -0
- package/dist/task-workspace/locks.d.ts +13 -0
- package/dist/task-workspace/locks.d.ts.map +1 -0
- package/dist/task-workspace/locks.js +44 -0
- package/dist/task-workspace/managed-root.d.ts +7 -0
- package/dist/task-workspace/managed-root.d.ts.map +1 -0
- package/dist/task-workspace/managed-root.js +98 -0
- package/dist/task-workspace/mutex.d.ts +8 -0
- package/dist/task-workspace/mutex.d.ts.map +1 -0
- package/dist/task-workspace/mutex.js +82 -0
- package/dist/task-workspace/naming.d.ts +15 -0
- package/dist/task-workspace/naming.d.ts.map +1 -0
- package/dist/task-workspace/naming.js +0 -0
- package/dist/task-workspace/provisioning.d.ts +3 -0
- package/dist/task-workspace/provisioning.d.ts.map +1 -0
- package/dist/task-workspace/provisioning.js +528 -0
- package/dist/task-workspace/reconciliation.d.ts +15 -0
- package/dist/task-workspace/reconciliation.d.ts.map +1 -0
- package/dist/task-workspace/reconciliation.js +274 -0
- package/dist/task-workspace/repair.d.ts +3 -0
- package/dist/task-workspace/repair.d.ts.map +1 -0
- package/dist/task-workspace/repair.js +286 -0
- package/dist/task-workspace/routes.d.ts +19 -0
- package/dist/task-workspace/routes.d.ts.map +1 -0
- package/dist/task-workspace/routes.js +481 -0
- package/dist/task-workspace/store.d.ts +12 -0
- package/dist/task-workspace/store.d.ts.map +1 -0
- package/dist/task-workspace/store.js +128 -0
- package/dist/task-workspace/types.d.ts +170 -0
- package/dist/task-workspace/types.d.ts.map +1 -0
- package/dist/task-workspace/types.js +5 -0
- package/dist/voice-action-governance.d.ts +23 -0
- package/dist/voice-action-governance.d.ts.map +1 -0
- package/dist/voice-action-governance.js +126 -0
- package/dist/voice-handlers.d.ts +6 -0
- package/dist/voice-handlers.d.ts.map +1 -0
- package/dist/voice-handlers.js +570 -0
- package/dist/voice-realtime-grounded-tool.d.ts +31 -0
- package/dist/voice-realtime-grounded-tool.d.ts.map +1 -0
- package/dist/voice-realtime-grounded-tool.js +322 -0
- package/dist/voice-realtime.d.ts +69 -0
- package/dist/voice-realtime.d.ts.map +1 -0
- package/dist/voice-realtime.js +787 -0
- package/dist/workspace-state-handlers.d.ts +5 -0
- package/dist/workspace-state-handlers.d.ts.map +1 -0
- package/dist/workspace-state-handlers.js +106 -0
- package/package.json +20 -19
package/dist/run-engine.js
CHANGED
|
@@ -71,6 +71,7 @@ function workflowFingerprint(request) {
|
|
|
71
71
|
modelId: request.modelId,
|
|
72
72
|
governedHandoff: request.governedHandoff ?? null,
|
|
73
73
|
governedHandoffSourceGroundedRunId: request.governedHandoffSourceGroundedRunId ?? null,
|
|
74
|
+
governedHandoffVoiceAction: request.governedHandoffVoiceAction ?? null,
|
|
74
75
|
workingDirectory: workspaceRoot(request),
|
|
75
76
|
dryRun: true,
|
|
76
77
|
harnessVersion: HARNESS_VERSION,
|
|
@@ -345,6 +346,7 @@ function persistOutcome(ctx, identity, outcome) {
|
|
|
345
346
|
: buildGovernedHandoffEvidence({
|
|
346
347
|
request: ctx.request.governedHandoff,
|
|
347
348
|
sourceGroundedRunId: ctx.request.governedHandoffSourceGroundedRunId,
|
|
349
|
+
voiceAction: ctx.request.governedHandoffVoiceAction,
|
|
348
350
|
}));
|
|
349
351
|
}
|
|
350
352
|
return persistWorkflowEvidence(runIdentity, outcome.report, identity.sink.buffered(), ctx.evidence, ctx.request.governedHandoff === undefined
|
|
@@ -352,6 +354,7 @@ function persistOutcome(ctx, identity, outcome) {
|
|
|
352
354
|
: buildGovernedHandoffEvidence({
|
|
353
355
|
request: ctx.request.governedHandoff,
|
|
354
356
|
sourceGroundedRunId: ctx.request.governedHandoffSourceGroundedRunId,
|
|
357
|
+
voiceAction: ctx.request.governedHandoffVoiceAction,
|
|
355
358
|
}));
|
|
356
359
|
}
|
|
357
360
|
function attachEvidenceReport(report, evidence) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-handlers.d.ts","sourceRoot":"","sources":["../src/run-handlers.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"run-handlers.d.ts","sourceRoot":"","sources":["../src/run-handlers.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AA8K/C,wBAAsB,eAAe,CACnC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CA6CtB;AAeD,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,cAAc,CAUtF;AA+BD,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,WAAW,CAOnF;AAGD,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,WAAW,CAYhF;AAuBD,wBAAsB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAwBjG"}
|
package/dist/run-handlers.js
CHANGED
|
@@ -11,7 +11,13 @@ import { ActiveRunLimitError } from "./runs.js";
|
|
|
11
11
|
import { SSE_HEADERS, writeEvent, readyMessage } from "./sse.js";
|
|
12
12
|
import { errorBody, STREAMING } from "./routes.js";
|
|
13
13
|
import { currentRedactionSecrets } from "./deps.js";
|
|
14
|
+
import { VOICE_TRANSCRIPT_SCHEMA_VERSION, } from "@oscharko-dev/keiko-contracts";
|
|
15
|
+
import { validateWorkflowHandoffRequest } from "@oscharko-dev/keiko-contracts/workflow-handoff";
|
|
14
16
|
import { WorkspaceError } from "@oscharko-dev/keiko-workspace";
|
|
17
|
+
import { approvalTokenInputFor, createApprovalToken } from "./governed-workflow.js";
|
|
18
|
+
import { isVoiceDictationCapable, isVoiceRealtimeCapable } from "./read-handlers.js";
|
|
19
|
+
import { evaluateSpokenActionGovernance } from "./voice-action-governance.js";
|
|
20
|
+
import { resolveRegisteredOrManagedWorkspaceRoot } from "./task-workspace/authorization.js";
|
|
15
21
|
const MAX_BODY_BYTES = 1_000_000;
|
|
16
22
|
const VERIFY_NOOP_MODEL = {
|
|
17
23
|
call: () => Promise.reject(new Error("verify runs must not call the model")),
|
|
@@ -60,7 +66,7 @@ function readBody(req) {
|
|
|
60
66
|
// directories. Returns a RouteResult to return, or null when the check passes.
|
|
61
67
|
function rejectUnregisteredWorkspace(parsed, deps) {
|
|
62
68
|
const root = typeof parsed.input.workspaceRoot === "string" ? parsed.input.workspaceRoot : "";
|
|
63
|
-
const registered = deps
|
|
69
|
+
const registered = resolveRegisteredOrManagedWorkspaceRoot(deps, root) !== undefined;
|
|
64
70
|
return registered
|
|
65
71
|
? null
|
|
66
72
|
: {
|
|
@@ -71,6 +77,66 @@ function rejectUnregisteredWorkspace(parsed, deps) {
|
|
|
71
77
|
function resolveRunModel(parsed, deps) {
|
|
72
78
|
return parsed.kind === "verify" ? VERIFY_NOOP_MODEL : deps.modelPortFactory(parsed.modelId);
|
|
73
79
|
}
|
|
80
|
+
function validateTextGovernedHandoff(parsed) {
|
|
81
|
+
if (parsed.governedHandoff === undefined || parsed.governedHandoffVoiceOrigin !== undefined) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
const validation = validateWorkflowHandoffRequest(parsed.governedHandoff);
|
|
85
|
+
if (!validation.ok) {
|
|
86
|
+
return { status: 400, body: errorBody("BAD_REQUEST", validation.reasons.join("; ")) };
|
|
87
|
+
}
|
|
88
|
+
const expectedToken = createApprovalToken(approvalTokenInputFor(parsed.governedHandoff));
|
|
89
|
+
if (parsed.governedHandoff.userApprovalToken !== expectedToken) {
|
|
90
|
+
return {
|
|
91
|
+
status: 400,
|
|
92
|
+
body: errorBody("BAD_REQUEST", "governedHandoff approval token does not match the request."),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
function serverTrustedVoiceProfile(deps) {
|
|
98
|
+
if (isVoiceRealtimeCapable(deps)) {
|
|
99
|
+
return "full-realtime";
|
|
100
|
+
}
|
|
101
|
+
if (isVoiceDictationCapable(deps)) {
|
|
102
|
+
return "speech-to-text";
|
|
103
|
+
}
|
|
104
|
+
return "none";
|
|
105
|
+
}
|
|
106
|
+
function committedProjectionFor(origin) {
|
|
107
|
+
return {
|
|
108
|
+
schemaVersion: VOICE_TRANSCRIPT_SCHEMA_VERSION,
|
|
109
|
+
segments: [],
|
|
110
|
+
text: origin.committedText,
|
|
111
|
+
segmentCount: origin.committedSegments,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function applyVoiceGovernance(parsed, deps) {
|
|
115
|
+
if (parsed.governedHandoffVoiceOrigin === undefined) {
|
|
116
|
+
const invalidTextHandoff = validateTextGovernedHandoff(parsed);
|
|
117
|
+
return invalidTextHandoff ?? parsed;
|
|
118
|
+
}
|
|
119
|
+
if (parsed.governedHandoff === undefined) {
|
|
120
|
+
return { status: 400, body: errorBody("BAD_REQUEST", "voiceOrigin requires governedHandoff.") };
|
|
121
|
+
}
|
|
122
|
+
const trustedProfile = serverTrustedVoiceProfile(deps);
|
|
123
|
+
const decision = evaluateSpokenActionGovernance({
|
|
124
|
+
projection: committedProjectionFor(parsed.governedHandoffVoiceOrigin),
|
|
125
|
+
profile: trustedProfile,
|
|
126
|
+
turnIndex: parsed.governedHandoffVoiceOrigin.turnIndex,
|
|
127
|
+
source: parsed.governedHandoffVoiceOrigin.source,
|
|
128
|
+
request: parsed.governedHandoff,
|
|
129
|
+
providedConfirmationDigest: parsed.governedHandoffVoiceOrigin.confirmationDigest,
|
|
130
|
+
});
|
|
131
|
+
if (!decision.allowed) {
|
|
132
|
+
return { status: 403, body: errorBody("VOICE_ACTION_DENIED", decision.reason) };
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
...parsed,
|
|
136
|
+
governedHandoffVoiceOrigin: undefined,
|
|
137
|
+
governedHandoffVoiceAction: decision.audit,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
74
140
|
function isRecord(value) {
|
|
75
141
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
76
142
|
}
|
|
@@ -111,16 +177,20 @@ export async function handleCreateRun(ctx, deps) {
|
|
|
111
177
|
if ("code" in parsed) {
|
|
112
178
|
return { status: 400, body: errorBody(parsed.code, parsed.message) };
|
|
113
179
|
}
|
|
114
|
-
const
|
|
180
|
+
const governed = applyVoiceGovernance(parsed, deps);
|
|
181
|
+
if ("status" in governed) {
|
|
182
|
+
return governed;
|
|
183
|
+
}
|
|
184
|
+
const unregistered = rejectUnregisteredWorkspace(governed, deps);
|
|
115
185
|
if (unregistered !== null) {
|
|
116
186
|
return unregistered;
|
|
117
187
|
}
|
|
118
|
-
const model = resolveRunModel(
|
|
188
|
+
const model = resolveRunModel(governed, deps);
|
|
119
189
|
if (model === undefined) {
|
|
120
190
|
return { status: 400, body: errorBody("NO_MODEL", "No model provider is configured.") };
|
|
121
191
|
}
|
|
122
192
|
const engineCtx = {
|
|
123
|
-
request:
|
|
193
|
+
request: governed,
|
|
124
194
|
model,
|
|
125
195
|
registry: deps.registry,
|
|
126
196
|
evidence: {
|
package/dist/run-request.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
import { type SpokenActionAuditRecord, type VoiceProfile, type VoiceTranscriptSource } from "@oscharko-dev/keiko-contracts";
|
|
1
2
|
import type { WorkflowHandoffRequest } from "@oscharko-dev/keiko-contracts/workflow-handoff";
|
|
2
3
|
export type RunKind = "unit-tests" | "bug-investigation" | "explain-plan" | "verify";
|
|
4
|
+
export interface RunVoiceOrigin {
|
|
5
|
+
readonly profile: VoiceProfile;
|
|
6
|
+
readonly turnIndex: number;
|
|
7
|
+
readonly source: VoiceTranscriptSource;
|
|
8
|
+
readonly committedSegments: number;
|
|
9
|
+
readonly committedText: string;
|
|
10
|
+
readonly confirmationDigest: string | undefined;
|
|
11
|
+
}
|
|
3
12
|
export interface RunRequest {
|
|
4
13
|
readonly kind: RunKind;
|
|
5
14
|
readonly modelId: string;
|
|
@@ -8,6 +17,8 @@ export interface RunRequest {
|
|
|
8
17
|
readonly limits: Record<string, unknown> | undefined;
|
|
9
18
|
readonly governedHandoff?: WorkflowHandoffRequest | undefined;
|
|
10
19
|
readonly governedHandoffSourceGroundedRunId?: string | undefined;
|
|
20
|
+
readonly governedHandoffVoiceOrigin?: RunVoiceOrigin | undefined;
|
|
21
|
+
readonly governedHandoffVoiceAction?: SpokenActionAuditRecord | undefined;
|
|
11
22
|
}
|
|
12
23
|
export interface RunRequestError {
|
|
13
24
|
readonly code: "BAD_REQUEST";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-request.d.ts","sourceRoot":"","sources":["../src/run-request.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAE7F,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,mBAAmB,GAAG,cAAc,GAAG,QAAQ,CAAC;AAErF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAExC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAErD,QAAQ,CAAC,eAAe,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,kCAAkC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"run-request.d.ts","sourceRoot":"","sources":["../src/run-request.ts"],"names":[],"mappings":"AASA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAE7F,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,mBAAmB,GAAG,cAAc,GAAG,QAAQ,CAAC;AAErF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAExC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAErD,QAAQ,CAAC,eAAe,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,kCAAkC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAGjE,QAAQ,CAAC,0BAA0B,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAGjE,QAAQ,CAAC,0BAA0B,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;CAC3E;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAubD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,eAAe,CAczE"}
|
package/dist/run-request.js
CHANGED
|
@@ -6,9 +6,107 @@
|
|
|
6
6
|
// the gated apply route (D8). The deeper guards (`isSensitivePath`, patch limits, target validation)
|
|
7
7
|
// are enforced by the workflow/harness entry points the engine calls; the BFF never reimplements
|
|
8
8
|
// them.
|
|
9
|
+
import {} from "@oscharko-dev/keiko-contracts";
|
|
9
10
|
function isRecord(value) {
|
|
10
11
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11
12
|
}
|
|
13
|
+
const VOICE_PROFILES = [
|
|
14
|
+
"none",
|
|
15
|
+
"speech-to-text",
|
|
16
|
+
"speech-output",
|
|
17
|
+
"full-realtime",
|
|
18
|
+
];
|
|
19
|
+
const VOICE_TRANSCRIPT_SOURCES = ["dictation", "realtime"];
|
|
20
|
+
const MAX_VOICE_COMMITTED_TEXT_CHARS = 8192;
|
|
21
|
+
const MAX_VOICE_TURN_INDEX = 1_000_000;
|
|
22
|
+
const MAX_VOICE_COMMITTED_SEGMENTS = 10_000;
|
|
23
|
+
const CONFIRMATION_DIGEST_PATTERN = /^[0-9a-f]{64}$/;
|
|
24
|
+
function badRequest(message) {
|
|
25
|
+
return { code: "BAD_REQUEST", message };
|
|
26
|
+
}
|
|
27
|
+
function isRunRequestError(value) {
|
|
28
|
+
return isRecord(value) && value.code === "BAD_REQUEST" && typeof value.message === "string";
|
|
29
|
+
}
|
|
30
|
+
function isVoiceProfile(value) {
|
|
31
|
+
return typeof value === "string" && VOICE_PROFILES.includes(value);
|
|
32
|
+
}
|
|
33
|
+
function isRunVoiceTranscriptSource(value) {
|
|
34
|
+
return (typeof value === "string" && VOICE_TRANSCRIPT_SOURCES.includes(value));
|
|
35
|
+
}
|
|
36
|
+
function isBoundedNonNegativeInteger(value, max) {
|
|
37
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 0 && value <= max;
|
|
38
|
+
}
|
|
39
|
+
function parseOptionalString(body, name) {
|
|
40
|
+
const value = body[name];
|
|
41
|
+
if (value === undefined) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
return typeof value === "string"
|
|
45
|
+
? value
|
|
46
|
+
: badRequest(`${name} must be a string when provided.`);
|
|
47
|
+
}
|
|
48
|
+
function parseConfirmationDigest(value) {
|
|
49
|
+
if (value === undefined) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
if (typeof value !== "string" || !CONFIRMATION_DIGEST_PATTERN.test(value)) {
|
|
53
|
+
return badRequest("voiceOrigin.confirmationDigest must be a 64-char lowercase sha256 hex.");
|
|
54
|
+
}
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
function parseVoiceOriginFields(value) {
|
|
58
|
+
if (!isVoiceProfile(value.profile)) {
|
|
59
|
+
return badRequest("voiceOrigin.profile is invalid.");
|
|
60
|
+
}
|
|
61
|
+
if (!isBoundedNonNegativeInteger(value.turnIndex, MAX_VOICE_TURN_INDEX)) {
|
|
62
|
+
return badRequest("voiceOrigin.turnIndex must be a bounded non-negative integer.");
|
|
63
|
+
}
|
|
64
|
+
if (!isRunVoiceTranscriptSource(value.source)) {
|
|
65
|
+
return badRequest("voiceOrigin.source is invalid.");
|
|
66
|
+
}
|
|
67
|
+
if (!isBoundedNonNegativeInteger(value.committedSegments, MAX_VOICE_COMMITTED_SEGMENTS)) {
|
|
68
|
+
return badRequest("voiceOrigin.committedSegments must be a bounded non-negative integer.");
|
|
69
|
+
}
|
|
70
|
+
if (typeof value.committedText !== "string" ||
|
|
71
|
+
value.committedText.length > MAX_VOICE_COMMITTED_TEXT_CHARS) {
|
|
72
|
+
return badRequest("voiceOrigin.committedText must be a string within the size limit.");
|
|
73
|
+
}
|
|
74
|
+
const confirmationDigest = parseConfirmationDigest(value.confirmationDigest);
|
|
75
|
+
if (typeof confirmationDigest === "object") {
|
|
76
|
+
return confirmationDigest;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
profile: value.profile,
|
|
80
|
+
turnIndex: value.turnIndex,
|
|
81
|
+
source: value.source,
|
|
82
|
+
committedSegments: value.committedSegments,
|
|
83
|
+
committedText: value.committedText,
|
|
84
|
+
confirmationDigest,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function parseGovernedHandoff(body) {
|
|
88
|
+
const value = body.governedHandoff;
|
|
89
|
+
if (value === undefined) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
if (!isRecord(value)) {
|
|
93
|
+
return badRequest("governedHandoff must be an object when provided.");
|
|
94
|
+
}
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
function parseVoiceOrigin(body, governedHandoff) {
|
|
98
|
+
const value = body.voiceOrigin;
|
|
99
|
+
if (value === undefined) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
if (governedHandoff === undefined) {
|
|
103
|
+
return badRequest("voiceOrigin requires governedHandoff.");
|
|
104
|
+
}
|
|
105
|
+
if (!isRecord(value)) {
|
|
106
|
+
return badRequest("voiceOrigin must be an object when provided.");
|
|
107
|
+
}
|
|
108
|
+
return parseVoiceOriginFields(value);
|
|
109
|
+
}
|
|
12
110
|
function resolveKind(body) {
|
|
13
111
|
const workflowId = body.workflowId;
|
|
14
112
|
const taskType = body.taskType;
|
|
@@ -176,18 +274,16 @@ function validateRunInput(kind, input) {
|
|
|
176
274
|
}
|
|
177
275
|
return validateBugInvestigationInput(input);
|
|
178
276
|
}
|
|
179
|
-
|
|
180
|
-
export function parseRunRequest(raw) {
|
|
181
|
-
let parsed;
|
|
277
|
+
function parseJsonObject(raw) {
|
|
182
278
|
try {
|
|
183
|
-
parsed = JSON.parse(raw);
|
|
279
|
+
const parsed = JSON.parse(raw);
|
|
280
|
+
return isRecord(parsed) ? parsed : badRequest("Request body must be a JSON object.");
|
|
184
281
|
}
|
|
185
282
|
catch {
|
|
186
|
-
return
|
|
187
|
-
}
|
|
188
|
-
if (!isRecord(parsed)) {
|
|
189
|
-
return { code: "BAD_REQUEST", message: "Request body must be a JSON object." };
|
|
283
|
+
return badRequest("Request body is not valid JSON.");
|
|
190
284
|
}
|
|
285
|
+
}
|
|
286
|
+
function parseRunRequestCore(parsed) {
|
|
191
287
|
const kind = resolveKind(parsed);
|
|
192
288
|
if (typeof kind !== "string") {
|
|
193
289
|
return kind;
|
|
@@ -208,12 +304,64 @@ export function parseRunRequest(raw) {
|
|
|
208
304
|
return {
|
|
209
305
|
kind,
|
|
210
306
|
modelId,
|
|
307
|
+
input,
|
|
308
|
+
limits: isRecord(limits) ? limits : undefined,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
function parseGovernedHandoffMetadata(parsed) {
|
|
312
|
+
if (parsed.governedHandoffVoiceAction !== undefined) {
|
|
313
|
+
return badRequest("governedHandoffVoiceAction is server-generated and must not be provided.");
|
|
314
|
+
}
|
|
315
|
+
const governedHandoff = parseGovernedHandoff(parsed);
|
|
316
|
+
if (isRunRequestError(governedHandoff)) {
|
|
317
|
+
return governedHandoff;
|
|
318
|
+
}
|
|
319
|
+
const governedHandoffSourceGroundedRunId = parseOptionalString(parsed, "governedHandoffSourceGroundedRunId");
|
|
320
|
+
if (isRunRequestError(governedHandoffSourceGroundedRunId)) {
|
|
321
|
+
return governedHandoffSourceGroundedRunId;
|
|
322
|
+
}
|
|
323
|
+
if (governedHandoffSourceGroundedRunId !== undefined && governedHandoff === undefined) {
|
|
324
|
+
return badRequest("governedHandoffSourceGroundedRunId requires governedHandoff.");
|
|
325
|
+
}
|
|
326
|
+
const governedHandoffVoiceOrigin = parseVoiceOrigin(parsed, governedHandoff);
|
|
327
|
+
if (isRunRequestError(governedHandoffVoiceOrigin)) {
|
|
328
|
+
return governedHandoffVoiceOrigin;
|
|
329
|
+
}
|
|
330
|
+
return { governedHandoff, governedHandoffSourceGroundedRunId, governedHandoffVoiceOrigin };
|
|
331
|
+
}
|
|
332
|
+
function buildRunRequest(core, metadata) {
|
|
333
|
+
return {
|
|
334
|
+
kind: core.kind,
|
|
335
|
+
modelId: core.modelId,
|
|
211
336
|
// Dry-run-first (ADR-0011 D8 / security M1): the create route NEVER applies, even if the client
|
|
212
337
|
// body carries `apply:true`. Applying is the sole responsibility of POST /api/runs/:runId/apply
|
|
213
338
|
// (route 9), which re-invokes the workflow through the gated path. A one-shot create-with-apply
|
|
214
339
|
// would bypass the explicit review→apply step, so the body flag is deliberately ignored here.
|
|
215
340
|
apply: false,
|
|
216
|
-
input,
|
|
217
|
-
|
|
341
|
+
input: core.input,
|
|
342
|
+
limits: core.limits,
|
|
343
|
+
...(metadata.governedHandoff === undefined ? {} : { governedHandoff: metadata.governedHandoff }),
|
|
344
|
+
...(metadata.governedHandoffSourceGroundedRunId === undefined
|
|
345
|
+
? {}
|
|
346
|
+
: { governedHandoffSourceGroundedRunId: metadata.governedHandoffSourceGroundedRunId }),
|
|
347
|
+
...(metadata.governedHandoffVoiceOrigin === undefined
|
|
348
|
+
? {}
|
|
349
|
+
: { governedHandoffVoiceOrigin: metadata.governedHandoffVoiceOrigin }),
|
|
218
350
|
};
|
|
219
351
|
}
|
|
352
|
+
// Parses the raw JSON text into a validated RunRequest, or a typed BAD_REQUEST error.
|
|
353
|
+
export function parseRunRequest(raw) {
|
|
354
|
+
const parsed = parseJsonObject(raw);
|
|
355
|
+
if (isRunRequestError(parsed)) {
|
|
356
|
+
return parsed;
|
|
357
|
+
}
|
|
358
|
+
const core = parseRunRequestCore(parsed);
|
|
359
|
+
if (isRunRequestError(core)) {
|
|
360
|
+
return core;
|
|
361
|
+
}
|
|
362
|
+
const metadata = parseGovernedHandoffMetadata(parsed);
|
|
363
|
+
if (isRunRequestError(metadata)) {
|
|
364
|
+
return metadata;
|
|
365
|
+
}
|
|
366
|
+
return buildRunRequest(core, metadata);
|
|
367
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type RuntimeCapabilitiesResponse, type RuntimeCapabilityKind, type RuntimeCapabilityState, type RuntimeCapabilityUnavailableReason } from "@oscharko-dev/keiko-contracts";
|
|
2
|
+
import { type WorkspaceInfo } from "@oscharko-dev/keiko-workspace";
|
|
3
|
+
import type { WorkspaceFs } from "@oscharko-dev/keiko-workspace";
|
|
4
|
+
export declare const DEFAULT_RUNTIME_CAPABILITY_DEADLINE_MS: 250;
|
|
5
|
+
export interface HostExecutableSpec {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly kind: Exclude<RuntimeCapabilityKind, "command-source">;
|
|
8
|
+
readonly executable: string;
|
|
9
|
+
readonly label: string;
|
|
10
|
+
readonly remediationHint: string;
|
|
11
|
+
}
|
|
12
|
+
export interface HostExecutableProbeResult {
|
|
13
|
+
readonly state: RuntimeCapabilityState;
|
|
14
|
+
readonly unavailableReason?: RuntimeCapabilityUnavailableReason | undefined;
|
|
15
|
+
readonly version?: string | undefined;
|
|
16
|
+
}
|
|
17
|
+
export interface HostExecutableProbe {
|
|
18
|
+
probe(executable: string, workspaceRoot: string | undefined): HostExecutableProbeResult;
|
|
19
|
+
}
|
|
20
|
+
export interface RuntimeCapabilityDetectorOptions {
|
|
21
|
+
readonly workspace?: WorkspaceInfo | undefined;
|
|
22
|
+
readonly fs?: WorkspaceFs | undefined;
|
|
23
|
+
readonly env?: NodeJS.ProcessEnv | undefined;
|
|
24
|
+
readonly platform?: NodeJS.Platform | undefined;
|
|
25
|
+
readonly now?: (() => number) | undefined;
|
|
26
|
+
readonly deadlineMs?: number | undefined;
|
|
27
|
+
readonly probe?: HostExecutableProbe | undefined;
|
|
28
|
+
readonly specs?: readonly HostExecutableSpec[] | undefined;
|
|
29
|
+
}
|
|
30
|
+
export declare const RUNTIME_HOST_EXECUTABLE_SPECS: readonly HostExecutableSpec[];
|
|
31
|
+
export declare class PathHostExecutableProbe implements HostExecutableProbe {
|
|
32
|
+
private readonly env;
|
|
33
|
+
private readonly platform;
|
|
34
|
+
constructor(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform);
|
|
35
|
+
probe(executable: string, workspaceRoot: string | undefined): HostExecutableProbeResult;
|
|
36
|
+
}
|
|
37
|
+
export declare function detectRuntimeCapabilities(options?: RuntimeCapabilityDetectorOptions): RuntimeCapabilitiesResponse;
|
|
38
|
+
//# sourceMappingURL=capabilityDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilityDetector.d.ts","sourceRoot":"","sources":["../../src/runtime/capabilityDetector.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,2BAA2B,EAEhC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EAGxC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,eAAO,MAAM,sCAAsC,EAAG,GAAY,CAAC;AAKnE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;IAChE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,kCAAkC,GAAG,SAAS,CAAC;IAC5E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,yBAAyB,CAAC;CACzF;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,CAAC;CAC5D;AAED,eAAO,MAAM,6BAA6B,EAAE,SAAS,kBAAkB,EA4FrE,CAAC;AA6GH,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;gBAGzC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B;IAMvC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,yBAAyB;CAqB/F;AAwRD,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,gCAAqC,GAC7C,2BAA2B,CAsB7B"}
|