intentdna 1.9.0 → 1.9.3

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 (131) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +227 -87
  4. package/dist/cli/commands/run-lifecycle.d.ts +61 -11
  5. package/dist/cli/commands/run-lifecycle.js +184 -50
  6. package/dist/cli/commands/run-observer.d.ts +15 -0
  7. package/dist/cli/commands/run-observer.js +210 -0
  8. package/dist/cli/commands/run.d.ts +16 -20
  9. package/dist/cli/commands/run.js +461 -659
  10. package/dist/cli/commands/sync.js +16 -12
  11. package/dist/cli/index.js +14 -5
  12. package/dist/compiler/compile.d.ts +1 -0
  13. package/dist/compiler/compile.js +1 -1
  14. package/dist/compiler/controller.d.ts +16 -0
  15. package/dist/compiler/controller.js +693 -0
  16. package/dist/compiler/input-resolver.d.ts +2 -0
  17. package/dist/compiler/input-resolver.js +22 -6
  18. package/dist/hooks/cli.d.ts +45 -0
  19. package/dist/hooks/cli.js +263 -31
  20. package/dist/hooks/host-event.d.ts +57 -0
  21. package/dist/hooks/host-event.js +187 -0
  22. package/dist/hooks/index.d.ts +1 -0
  23. package/dist/hooks/index.js +1 -0
  24. package/dist/hooks/protocol.d.ts +7 -0
  25. package/dist/hooks/schema.d.ts +1 -0
  26. package/dist/hooks/schema.js +89 -1
  27. package/dist/hooks/state.d.ts +23 -1
  28. package/dist/hooks/state.js +9 -0
  29. package/dist/index.d.ts +1 -0
  30. package/dist/index.js +1 -0
  31. package/dist/mcp/index.js +2 -0
  32. package/dist/mcp/tools-run.d.ts +4 -0
  33. package/dist/mcp/tools-run.js +419 -0
  34. package/dist/mcp/tools-state.d.ts +1 -1
  35. package/dist/mcp/tools-state.js +13 -241
  36. package/dist/runtime/artifact-store.d.ts +146 -0
  37. package/dist/runtime/artifact-store.js +1436 -0
  38. package/dist/runtime/canonical-attempt-outcome.d.ts +12 -0
  39. package/dist/runtime/canonical-attempt-outcome.js +195 -0
  40. package/dist/runtime/canonical-json.d.ts +10 -0
  41. package/dist/runtime/canonical-json.js +105 -0
  42. package/dist/runtime/canonical-run-application.d.ts +93 -0
  43. package/dist/runtime/canonical-run-application.js +229 -0
  44. package/dist/runtime/canonical-run-service.d.ts +454 -0
  45. package/dist/runtime/canonical-run-service.js +4760 -0
  46. package/dist/runtime/canonical-runtime-composition.d.ts +22 -0
  47. package/dist/runtime/canonical-runtime-composition.js +34 -0
  48. package/dist/runtime/canonical-runtime-projection.d.ts +3 -0
  49. package/dist/runtime/canonical-runtime-projection.js +4 -0
  50. package/dist/runtime/canonical-target-compiler.d.ts +46 -0
  51. package/dist/runtime/canonical-target-compiler.js +514 -0
  52. package/dist/runtime/claude-agent-identity.d.ts +2 -0
  53. package/dist/runtime/claude-agent-identity.js +21 -0
  54. package/dist/runtime/executable-run-plan.d.ts +328 -0
  55. package/dist/runtime/executable-run-plan.js +1485 -0
  56. package/dist/runtime/execution-authority.d.ts +83 -0
  57. package/dist/runtime/execution-authority.js +98 -0
  58. package/dist/runtime/handoff-resolver.js +4 -1
  59. package/dist/runtime/harness-pull-adapter.d.ts +146 -0
  60. package/dist/runtime/harness-pull-adapter.js +315 -0
  61. package/dist/runtime/index.d.ts +39 -14
  62. package/dist/runtime/index.js +29 -7
  63. package/dist/runtime/local-execution-authority.d.ts +194 -0
  64. package/dist/runtime/local-execution-authority.js +2897 -0
  65. package/dist/runtime/local-execution-reconciliation.d.ts +20 -0
  66. package/dist/runtime/local-execution-reconciliation.js +107 -0
  67. package/dist/runtime/local-execution-supervisor-script.d.ts +7 -0
  68. package/dist/runtime/local-execution-supervisor-script.js +793 -0
  69. package/dist/runtime/local-provider-sandbox.d.ts +42 -0
  70. package/dist/runtime/local-provider-sandbox.js +154 -0
  71. package/dist/runtime/local-verifier-execution.d.ts +24 -0
  72. package/dist/runtime/local-verifier-execution.js +290 -0
  73. package/dist/runtime/local-windows-execution-supervisor-script.d.ts +6 -0
  74. package/dist/runtime/local-windows-execution-supervisor-script.js +788 -0
  75. package/dist/runtime/plan-store.d.ts +30 -0
  76. package/dist/runtime/plan-store.js +231 -0
  77. package/dist/runtime/process-tree.d.ts +9 -0
  78. package/dist/runtime/process-tree.js +97 -24
  79. package/dist/runtime/providers/codex.js +2 -2
  80. package/dist/runtime/push-driver.d.ts +184 -0
  81. package/dist/runtime/push-driver.js +1002 -0
  82. package/dist/runtime/result-store.d.ts +34 -3
  83. package/dist/runtime/result-store.js +1073 -2
  84. package/dist/runtime/run-binding.d.ts +68 -0
  85. package/dist/runtime/run-binding.js +278 -0
  86. package/dist/runtime/run-contracts.d.ts +575 -0
  87. package/dist/runtime/run-contracts.js +58 -7
  88. package/dist/runtime/run-controller.d.ts +1 -6
  89. package/dist/runtime/run-controller.js +0 -41
  90. package/dist/runtime/run-store.d.ts +85 -7
  91. package/dist/runtime/run-store.js +2528 -186
  92. package/dist/runtime/skill-adapter.d.ts +18 -7
  93. package/dist/runtime/skill-adapter.js +100 -742
  94. package/dist/runtime/structured-output-validator.d.ts +44 -0
  95. package/dist/runtime/structured-output-validator.js +171 -0
  96. package/dist/runtime/verifier-command-binding.d.ts +22 -0
  97. package/dist/runtime/verifier-command-binding.js +162 -0
  98. package/dist/runtime/verifier.d.ts +46 -6
  99. package/dist/runtime/verifier.js +355 -53
  100. package/dist/runtime/windows-job-keeper.d.ts +47 -0
  101. package/dist/runtime/windows-job-keeper.js +231 -0
  102. package/dist/runtime/worker-executor.d.ts +17 -1
  103. package/dist/runtime/worker-executor.js +26 -5
  104. package/dist/runtime/workflow-plan-adapter.d.ts +19 -0
  105. package/dist/runtime/workflow-plan-adapter.js +502 -6
  106. package/dist/runtime/workflow-runtime-manifest.d.ts +1 -0
  107. package/dist/runtime/workflow-runtime-manifest.js +5 -0
  108. package/dist/runtime/workspace-isolation.d.ts +29 -2
  109. package/dist/runtime/workspace-isolation.js +488 -11
  110. package/dist/runtime/workspace-observation.d.ts +44 -0
  111. package/dist/runtime/workspace-observation.js +216 -0
  112. package/dist/schema/controller-registry.d.ts +0 -7
  113. package/dist/schema/controller-registry.js +0 -8
  114. package/dist/schema/types.d.ts +84 -10
  115. package/dist/schema/types.js +2 -0
  116. package/dist/schema/validate.js +151 -1
  117. package/dist/schema/validators/controllers.d.ts +1 -1
  118. package/dist/schema/validators/controllers.js +126 -41
  119. package/dist/schema/workflow-authoring-contract.js +2 -0
  120. package/dist/schema/yaml-parser.js +1 -1
  121. package/dist/templates/flutter-rewrite-new.dna.yaml +1 -0
  122. package/dist/templates/flutter-rewrite.dna.yaml +87 -60
  123. package/dist/templates/safe-refactoring.dna.yaml +1 -0
  124. package/native/windows-job-keeper/README.md +80 -0
  125. package/native/windows-job-keeper/bin/aarch64/intentdna-windows-job-keeper.exe +0 -0
  126. package/native/windows-job-keeper/bin/x86_64/intentdna-windows-job-keeper.exe +0 -0
  127. package/native/windows-job-keeper/keeper.c +979 -0
  128. package/native/windows-job-keeper/manifest.json +33 -0
  129. package/package.json +6 -2
  130. package/scripts/build-windows-job-keeper.mjs +172 -0
  131. package/scripts/verify-windows-job-keeper.mjs +184 -0
@@ -1,3 +1,4 @@
1
+ import type { ArtifactCaptureRef } from "./artifact-store.js";
1
2
  /**
2
3
  * Foundation Runtime contracts.
3
4
  *
@@ -11,6 +12,7 @@ export type RuntimeId<Kind extends string> = string & {
11
12
  };
12
13
  export type RunId = RuntimeId<"run_id">;
13
14
  export type StepId = RuntimeId<"step_id">;
15
+ export type ActivationId = RuntimeId<"activation_id">;
14
16
  export type AttemptId = RuntimeId<"attempt_id">;
15
17
  export type WorkerSessionId = RuntimeId<"worker_session_id">;
16
18
  export type ResultId = RuntimeId<"result_id">;
@@ -19,10 +21,108 @@ export type ClaimToken = RuntimeId<"claim_token">;
19
21
  export type JsonValue = null | boolean | number | string | readonly JsonValue[] | {
20
22
  readonly [key: string]: JsonValue;
21
23
  };
24
+ export declare const CALLER_ATTESTATION_SCHEMA_VERSION: "intentdna.harness_caller_attestation.v1";
25
+ export interface CanonicalCallerAttestationPayload {
26
+ readonly schema_version: typeof CALLER_ATTESTATION_SCHEMA_VERSION;
27
+ readonly authority_id: string;
28
+ readonly agent_id: string;
29
+ readonly session_id: string;
30
+ readonly run_id: RunId;
31
+ readonly step_id: string;
32
+ readonly activation_id: string;
33
+ readonly attempt_id: string;
34
+ readonly claim_epoch: number;
35
+ readonly worker_session_id: WorkerSessionId;
36
+ readonly submission_key_digest: CanonicalResultDigest;
37
+ readonly execution_digest: CanonicalResultDigest;
38
+ }
22
39
  export interface TaskKey {
23
40
  readonly run_id: RunId;
24
41
  readonly step_id: StepId;
25
42
  }
43
+ /** One routed instance of a logical step, including loop iterations. */
44
+ export interface ActivationKey extends TaskKey {
45
+ readonly activation_id: ActivationId;
46
+ }
47
+ export declare const CANONICAL_ACTIVATION_STATE_VALUES: readonly ["dormant", "dependency_blocked", "ready", "claimed", "running", "waiting_for_human", "succeeded", "failed", "skipped", "cancelled"];
48
+ export type CanonicalActivationState = typeof CANONICAL_ACTIVATION_STATE_VALUES[number];
49
+ export declare const CANONICAL_ACTIVATION_STATE_TRANSITIONS: {
50
+ readonly dormant: readonly ["dependency_blocked", "ready", "skipped", "cancelled"];
51
+ readonly dependency_blocked: readonly ["ready", "skipped", "cancelled"];
52
+ readonly ready: readonly ["claimed", "waiting_for_human", "skipped", "cancelled"];
53
+ readonly claimed: readonly ["ready", "running", "cancelled"];
54
+ readonly running: readonly ["ready", "succeeded", "failed", "cancelled"];
55
+ readonly waiting_for_human: readonly ["succeeded", "cancelled"];
56
+ readonly succeeded: readonly [];
57
+ readonly failed: readonly [];
58
+ readonly skipped: readonly [];
59
+ readonly cancelled: readonly [];
60
+ };
61
+ export interface CanonicalActivationRecord extends ActivationKey {
62
+ readonly workflow_round: number;
63
+ readonly state: CanonicalActivationState;
64
+ readonly attempt_count: number;
65
+ readonly current_attempt_id: AttemptId | null;
66
+ readonly committed_result_id: ResultId | null;
67
+ readonly created_at: string;
68
+ readonly updated_at: string;
69
+ }
70
+ export type AttemptExecutor = {
71
+ readonly kind: "worker";
72
+ readonly worker_session_id: WorkerSessionId;
73
+ } | {
74
+ readonly kind: "system";
75
+ readonly service_instance_id: string;
76
+ readonly operation: string;
77
+ } | {
78
+ readonly kind: "human";
79
+ readonly principal_ref: string;
80
+ readonly attestation_ref: string;
81
+ };
82
+ export interface CanonicalAttemptRecord extends ActivationKey {
83
+ readonly attempt_id: AttemptId;
84
+ readonly attempt_number: number;
85
+ readonly phase: AttemptPhase;
86
+ readonly executor: AttemptExecutor | null;
87
+ readonly started_at: string | null;
88
+ readonly completed_at: string | null;
89
+ readonly terminal_outcome: CanonicalAttemptOutcome | null;
90
+ }
91
+ export interface CanonicalAttemptClaim extends ActivationKey {
92
+ readonly attempt_id: AttemptId;
93
+ readonly claim_token: ClaimToken;
94
+ readonly claim_epoch: number;
95
+ readonly owner_id: string;
96
+ readonly claimed_record_version: number;
97
+ readonly driver_claim_lease: TaskLease;
98
+ readonly execution_deadline_at: string;
99
+ }
100
+ export type CanonicalWorkspacePlanPayload = {
101
+ readonly kind: "none";
102
+ readonly workspace_id: string;
103
+ readonly working_directory: string;
104
+ readonly authority_key: string;
105
+ } | {
106
+ readonly kind: "worktree";
107
+ readonly workspace_id: string;
108
+ readonly working_directory: string;
109
+ readonly repository_root: string;
110
+ readonly worktree_root: string;
111
+ readonly branch_name: string;
112
+ readonly base_ref: string;
113
+ readonly base_commit: string;
114
+ readonly ownership_key: string;
115
+ readonly authority_key: string;
116
+ };
117
+ export interface CanonicalWorkspacePlan {
118
+ readonly workspace_plan_id: CanonicalResultDigest;
119
+ readonly payload: CanonicalWorkspacePlanPayload;
120
+ }
121
+ export type CanonicalWorkspaceAllocation = CanonicalWorkspacePlanPayload & {
122
+ readonly workspace_plan_id: CanonicalResultDigest;
123
+ readonly observed_head: string | null;
124
+ readonly observed_branch_ref: string | null;
125
+ };
26
126
  /**
27
127
  * A worker_session_id is allocated once for one attempt and is carried through
28
128
  * its packet, provider events, provider result, and committed result.
@@ -118,6 +218,8 @@ export interface ReferenceHandoffBinding extends HandoffBindingBase {
118
218
  readonly reference: {
119
219
  readonly kind: "file" | "directory" | "artifact" | "uri";
120
220
  readonly value: string;
221
+ /** Immutable content identity. Legacy pre-canonical bindings use null. */
222
+ readonly artifact_id: string | null;
121
223
  };
122
224
  }
123
225
  export interface QuoteHandoffBinding extends HandoffBindingBase {
@@ -289,4 +391,477 @@ export interface RuntimeEvent {
289
391
  readonly occurred_at: string;
290
392
  readonly payload: JsonValue;
291
393
  }
394
+ export declare const CANONICAL_RUNTIME_EVENT_TYPE_VALUES: readonly ["run_created", "run_cancel_requested", "run_closed", "run_terminal", "activation_state_changed", "attempt_claimed", "attempt_attached", "workspace_planned", "workspace_allocated", "attempt_heartbeat", "attempt_released", "attempt_started", "attempt_stop_requested", "attempt_terminal", "handoff_resolved", "artifact_captured", "result_committed", "gate_evaluated", "decision_evaluated", "route_selected", "retry_segment_scheduled", "retry_scheduled", "interaction_requested", "interaction_submitted"];
395
+ export type CanonicalRuntimeEventType = typeof CANONICAL_RUNTIME_EVENT_TYPE_VALUES[number];
396
+ export type CanonicalRuntimeEventPayloadMap = {
397
+ readonly run_created: {
398
+ readonly plan_id: string;
399
+ readonly run_binding_id: string;
400
+ };
401
+ readonly run_cancel_requested: {
402
+ readonly reason: string | null;
403
+ };
404
+ readonly run_closed: {
405
+ readonly reason_code: string;
406
+ readonly reason: string | null;
407
+ };
408
+ readonly run_terminal: {
409
+ readonly status: "succeeded" | "failed" | "cancelled";
410
+ readonly reason_code: string;
411
+ readonly reason: string | null;
412
+ };
413
+ readonly activation_state_changed: {
414
+ readonly from: CanonicalActivationState;
415
+ readonly to: CanonicalActivationState;
416
+ readonly reason_code: string;
417
+ };
418
+ readonly attempt_claimed: {
419
+ readonly claim_epoch: number;
420
+ readonly owner_id: string;
421
+ readonly claim_expires_at: string;
422
+ readonly execution_deadline_at: string;
423
+ };
424
+ readonly attempt_attached: {
425
+ readonly claim_epoch: number;
426
+ readonly executor: AttemptExecutor;
427
+ };
428
+ readonly workspace_planned: {
429
+ readonly workspace_plan_id: CanonicalResultDigest;
430
+ readonly plan: CanonicalWorkspacePlan;
431
+ };
432
+ readonly workspace_allocated: {
433
+ readonly workspace_plan_id: CanonicalResultDigest;
434
+ readonly allocation: CanonicalWorkspaceAllocation;
435
+ };
436
+ readonly attempt_heartbeat: {
437
+ readonly claim_epoch: number;
438
+ readonly heartbeat_at: string;
439
+ readonly claim_expires_at: string;
440
+ };
441
+ readonly attempt_released: {
442
+ readonly claim_epoch: number;
443
+ readonly owner_id: string;
444
+ readonly reason_code: string;
445
+ };
446
+ readonly attempt_started: {
447
+ readonly executor: AttemptExecutor;
448
+ };
449
+ readonly attempt_stop_requested: {
450
+ readonly intent: CanonicalAttemptStopIntent;
451
+ };
452
+ readonly attempt_terminal: {
453
+ readonly executor: AttemptExecutor;
454
+ readonly outcome: CanonicalAttemptOutcome;
455
+ readonly worker_stop_receipt: CanonicalWorkerStopReceipt | null;
456
+ readonly worker_nonlaunch_attestation: CanonicalWorkerNonlaunchAttestation | null;
457
+ readonly worker_already_stopped_evidence?: CanonicalWorkerAlreadyStoppedEvidence | null;
458
+ };
459
+ readonly handoff_resolved: {
460
+ readonly binding_id: string;
461
+ readonly source_result_id: ResultId;
462
+ readonly output_name: string;
463
+ };
464
+ readonly artifact_captured: {
465
+ readonly capture: ArtifactCaptureRef;
466
+ };
467
+ readonly result_committed: {
468
+ readonly result_digest: CanonicalResultDigest;
469
+ readonly submission_key_digest: CanonicalResultDigest;
470
+ readonly submission_digest: CanonicalResultDigest;
471
+ readonly worker_stop_receipt_digest: CanonicalResultDigest | null;
472
+ readonly workspace_allocation_digest: CanonicalResultDigest | null;
473
+ readonly mutation_authority_instance_id: string | null;
474
+ readonly mutation_fencing_epoch: number | null;
475
+ readonly finalization_purpose: "finalize_result" | "reconcile_published_result" | "system_operation";
476
+ };
477
+ readonly gate_evaluated: {
478
+ readonly gate_id: string;
479
+ readonly predicate: JsonValue;
480
+ readonly source_result_id: ResultId | null;
481
+ readonly passed: boolean;
482
+ readonly reason_code: string;
483
+ };
484
+ readonly decision_evaluated: {
485
+ readonly decision_id: string;
486
+ readonly value: JsonValue;
487
+ readonly source_result_id: ResultId | null;
488
+ readonly reason_code: string;
489
+ };
490
+ readonly route_selected: {
491
+ readonly route_id: string;
492
+ readonly source_activation_id: ActivationId;
493
+ readonly source_result_id: ResultId | null;
494
+ readonly successor_activation_ids: readonly ActivationId[];
495
+ readonly reason_code: string;
496
+ };
497
+ readonly retry_segment_scheduled: {
498
+ readonly retry_segment_id: string;
499
+ readonly from_round: number;
500
+ readonly to_round: number;
501
+ readonly prior_activation_ids: readonly ActivationId[];
502
+ readonly replacement_activation_ids: readonly ActivationId[];
503
+ readonly retry_from_activation_id: ActivationId;
504
+ readonly triggering_result_id: ResultId | null;
505
+ readonly delay_ms: number;
506
+ readonly ready_at: string;
507
+ readonly reason_code: string;
508
+ };
509
+ readonly retry_scheduled: {
510
+ readonly prior_attempt_id: AttemptId;
511
+ readonly replacement_attempt_id: AttemptId;
512
+ readonly next_attempt_number: number;
513
+ readonly delay_ms: number;
514
+ readonly reason_code: string;
515
+ };
516
+ readonly interaction_requested: {
517
+ readonly interaction_id: string;
518
+ readonly expected_principal_ref: string | null;
519
+ };
520
+ readonly interaction_submitted: {
521
+ readonly interaction_id: string;
522
+ readonly principal_ref: string;
523
+ readonly attestation_ref: string;
524
+ };
525
+ };
526
+ /** Semantic events always retain the activation that gave the event meaning. */
527
+ export interface CanonicalSemanticEventEnvelope<Type extends CanonicalRuntimeEventType = CanonicalRuntimeEventType, Payload = CanonicalRuntimeEventPayloadMap[Type]> {
528
+ readonly event_id: EventId;
529
+ readonly run_id: RunId;
530
+ readonly step_id: StepId | null;
531
+ readonly activation_id: ActivationId | null;
532
+ readonly attempt_id: AttemptId | null;
533
+ readonly result_id: ResultId | null;
534
+ readonly sequence: number;
535
+ readonly idempotency_key: string;
536
+ readonly type: Type;
537
+ readonly occurred_at: string;
538
+ readonly payload: Payload;
539
+ }
540
+ export type GateEvaluatedEvent = CanonicalSemanticEventEnvelope<"gate_evaluated">;
541
+ export type DecisionEvaluatedEvent = CanonicalSemanticEventEnvelope<"decision_evaluated">;
542
+ export type RouteSelectedEvent = CanonicalSemanticEventEnvelope<"route_selected">;
543
+ export type ResultCommittedEvent = CanonicalSemanticEventEnvelope<"result_committed">;
544
+ export type RunTerminalEvent = CanonicalSemanticEventEnvelope<"run_terminal">;
545
+ export type CanonicalRuntimeEvent = {
546
+ [Type in CanonicalRuntimeEventType]: CanonicalSemanticEventEnvelope<Type, CanonicalRuntimeEventPayloadMap[Type]>;
547
+ }[CanonicalRuntimeEventType];
548
+ export declare const CANONICAL_RESULT_SCHEMA_VERSION: "intentdna.canonical_result.v2";
549
+ export type CanonicalResultOutput = {
550
+ readonly name: string;
551
+ readonly kind: "artifact";
552
+ readonly capture: ArtifactCaptureRef;
553
+ } | {
554
+ readonly name: string;
555
+ readonly kind: "text";
556
+ readonly text: string;
557
+ } | {
558
+ readonly name: string;
559
+ readonly kind: "structured";
560
+ readonly value: JsonValue;
561
+ readonly schema_ref: string | null;
562
+ };
563
+ export type CanonicalSystemOrigin = {
564
+ readonly kind: "run_input";
565
+ readonly input_names: readonly string[];
566
+ } | {
567
+ readonly kind: "legacy_external";
568
+ readonly sources: readonly {
569
+ readonly source_path: string;
570
+ readonly expected_digest: CanonicalResultDigest;
571
+ readonly artifact_id: string;
572
+ }[];
573
+ } | {
574
+ readonly kind: "canonical_import";
575
+ readonly origin_plan_id: CanonicalResultDigest;
576
+ readonly origin_run_ids: readonly RunId[];
577
+ readonly origin_result_ids: readonly ResultId[];
578
+ readonly origin_artifact_ids: readonly string[];
579
+ readonly policy_id: string | null;
580
+ } | {
581
+ readonly kind: "current_run_results";
582
+ readonly source_result_ids: readonly ResultId[];
583
+ };
584
+ /** Executor-neutral result states plus the process facts unique to workers. */
585
+ export type CanonicalAttemptOutcome = {
586
+ readonly kind: "succeeded";
587
+ } | {
588
+ readonly kind: "failed";
589
+ readonly reason_code: string;
590
+ readonly message: string | null;
591
+ } | {
592
+ readonly kind: "cancelled";
593
+ readonly reason: string | null;
594
+ } | {
595
+ readonly kind: "worker_process";
596
+ readonly status: "succeeded" | "failed" | "cancelled";
597
+ readonly reason_code: string | null;
598
+ readonly message: string | null;
599
+ readonly process: TerminalOutcome;
600
+ };
601
+ /** @deprecated Use CanonicalAttemptOutcome for attempt and result truth. */
602
+ export type CanonicalResultOutcome = CanonicalAttemptOutcome;
603
+ export type CanonicalResultDigest = `sha256:${string}`;
604
+ export declare const CANONICAL_ATTEMPT_STOP_INTENT_SCHEMA_VERSION: "intentdna.attempt_stop_intent.v1";
605
+ export interface CanonicalAttemptStopIntent extends ActivationKey {
606
+ readonly schema_version: typeof CANONICAL_ATTEMPT_STOP_INTENT_SCHEMA_VERSION;
607
+ readonly attempt_id: AttemptId;
608
+ readonly claim_epoch: number;
609
+ readonly worker_session_id: WorkerSessionId;
610
+ readonly stop_idempotency_key: CanonicalResultDigest;
611
+ readonly purpose: "cancel" | "execution_deadline" | "peer_terminal";
612
+ readonly requested_at: string;
613
+ readonly started_at: string;
614
+ readonly requested_outcome: CanonicalAttemptOutcome;
615
+ }
616
+ /** A compact identity-bound pointer; source workspace paths never appear here. */
617
+ export interface CanonicalResultRef extends ActivationKey {
618
+ readonly result_id: ResultId;
619
+ readonly attempt_id: AttemptId;
620
+ readonly result_digest: CanonicalResultDigest;
621
+ }
622
+ export declare const CANONICAL_WORKER_STOP_RECEIPT_SCHEMA_VERSION: "intentdna.worker_stop_receipt.v1";
623
+ export interface CanonicalWorkerStopReceiptPayload extends ActivationKey {
624
+ readonly schema_version: typeof CANONICAL_WORKER_STOP_RECEIPT_SCHEMA_VERSION;
625
+ readonly attempt_id: AttemptId;
626
+ readonly claim_epoch: number;
627
+ readonly worker_session_id: WorkerSessionId;
628
+ readonly execution_instance_id: string;
629
+ readonly authority_kind: "local_process" | "host_attested";
630
+ readonly authority_instance_id: string;
631
+ readonly fencing_epoch: number;
632
+ readonly started_at: string;
633
+ readonly stopped_at: string;
634
+ readonly terminal_outcome: CanonicalAttemptOutcome;
635
+ readonly process_tree_drained: true;
636
+ readonly source_evidence_digest: CanonicalResultDigest;
637
+ }
638
+ export interface CanonicalWorkerStopReceipt {
639
+ readonly receipt_digest: CanonicalResultDigest;
640
+ readonly payload: CanonicalWorkerStopReceiptPayload;
641
+ }
642
+ export declare const CANONICAL_WORKER_ALREADY_STOPPED_EVIDENCE_SCHEMA_VERSION: "intentdna.worker_already_stopped_evidence.v1";
643
+ export interface CanonicalWorkerAlreadyStoppedEvidencePayload extends ActivationKey {
644
+ readonly schema_version: typeof CANONICAL_WORKER_ALREADY_STOPPED_EVIDENCE_SCHEMA_VERSION;
645
+ readonly attempt_id: AttemptId;
646
+ readonly claim_epoch: number;
647
+ readonly worker_session_id: WorkerSessionId;
648
+ readonly execution_instance_id: string;
649
+ readonly authority_kind: "local_process" | "host_attested";
650
+ readonly authority_instance_id: string;
651
+ readonly fencing_epoch: number;
652
+ readonly started_at: string;
653
+ readonly completed_at: string;
654
+ readonly observed_outcome: CanonicalAttemptOutcome;
655
+ readonly process_tree_drained: true;
656
+ readonly stop_idempotency_key: CanonicalResultDigest;
657
+ readonly stop_requested_at: string;
658
+ readonly stop_purpose: "cancel" | "execution_deadline" | "peer_terminal";
659
+ readonly stop_requested_outcome: CanonicalAttemptOutcome;
660
+ readonly source_evidence_digest: CanonicalResultDigest;
661
+ }
662
+ export interface CanonicalWorkerAlreadyStoppedEvidence {
663
+ readonly evidence_digest: CanonicalResultDigest;
664
+ readonly payload: CanonicalWorkerAlreadyStoppedEvidencePayload;
665
+ }
666
+ export declare const CANONICAL_WORKER_NONLAUNCH_ATTESTATION_SCHEMA_VERSION: "intentdna.worker_nonlaunch_attestation.v1";
667
+ export interface CanonicalWorkerNonlaunchAttestationPayload extends ActivationKey {
668
+ readonly schema_version: typeof CANONICAL_WORKER_NONLAUNCH_ATTESTATION_SCHEMA_VERSION;
669
+ readonly attempt_id: AttemptId;
670
+ readonly claim_epoch: number;
671
+ readonly worker_session_id: WorkerSessionId;
672
+ readonly execution_instance_id: string;
673
+ readonly authority_kind: "local_process" | "host_attested";
674
+ readonly authority_instance_id: string;
675
+ readonly fencing_epoch: number;
676
+ readonly started_at: string;
677
+ readonly attested_at: string;
678
+ readonly failure_idempotency_key: CanonicalResultDigest;
679
+ readonly launch_state: "never_launched";
680
+ readonly source_evidence_digest: CanonicalResultDigest;
681
+ }
682
+ export interface CanonicalWorkerNonlaunchAttestation {
683
+ readonly attestation_digest: CanonicalResultDigest;
684
+ readonly payload: CanonicalWorkerNonlaunchAttestationPayload;
685
+ }
686
+ export declare const CANONICAL_WORKSPACE_OBSERVATION_SCHEMA_VERSION: "intentdna.workspace_observation.v2";
687
+ export interface CanonicalWorkspaceObservation {
688
+ readonly schema_version: typeof CANONICAL_WORKSPACE_OBSERVATION_SCHEMA_VERSION;
689
+ readonly workspace_id: string;
690
+ readonly scope: {
691
+ readonly kind: "attempt_workspace";
692
+ readonly relative_root: ".";
693
+ readonly excluded_relative_paths: readonly [".dna/runtime", ".dna/worktrees/runtime"];
694
+ };
695
+ readonly observed_digest: CanonicalResultDigest;
696
+ readonly entry_count: number;
697
+ readonly byte_count: number;
698
+ readonly git: {
699
+ readonly repository_identity_digest: CanonicalResultDigest;
700
+ readonly head: string;
701
+ readonly symbolic_branch: string | null;
702
+ readonly porcelain_v2_digest: CanonicalResultDigest;
703
+ readonly local_config_digest: CanonicalResultDigest;
704
+ } | null;
705
+ }
706
+ export declare const CANONICAL_VERIFIER_EXECUTION_RECEIPT_SCHEMA_VERSION: "intentdna.verifier_execution_receipt.v1";
707
+ export interface CanonicalVerifierExecutionReceipt {
708
+ readonly schema_version: typeof CANONICAL_VERIFIER_EXECUTION_RECEIPT_SCHEMA_VERSION;
709
+ readonly evidence_mode: "historical_execution";
710
+ readonly plan_id: CanonicalResultDigest;
711
+ readonly verifier_id: string;
712
+ readonly verifier_definition_digest: CanonicalResultDigest;
713
+ readonly resolved_command_digest: CanonicalResultDigest;
714
+ readonly environment_binding_digest: CanonicalResultDigest;
715
+ readonly cwd_identity: {
716
+ readonly workspace_id: string;
717
+ readonly workspace_allocation_digest: CanonicalResultDigest;
718
+ readonly relative_working_directory: string;
719
+ readonly absolute_path_digest: CanonicalResultDigest;
720
+ };
721
+ readonly started_at: string;
722
+ readonly requested_at: string;
723
+ readonly completed_at: string;
724
+ readonly process_outcome: {
725
+ readonly kind: "exited";
726
+ readonly exit_code: number;
727
+ readonly signal: null;
728
+ readonly timed_out: false;
729
+ readonly launch_error: null;
730
+ } | {
731
+ readonly kind: "signaled";
732
+ readonly exit_code: null;
733
+ readonly signal: string;
734
+ readonly timed_out: false;
735
+ readonly launch_error: null;
736
+ } | {
737
+ readonly kind: "timed_out";
738
+ readonly exit_code: number | null;
739
+ readonly signal: string | null;
740
+ readonly timed_out: true;
741
+ readonly launch_error: null;
742
+ } | {
743
+ readonly kind: "launch_error";
744
+ readonly exit_code: null;
745
+ readonly signal: null;
746
+ readonly timed_out: false;
747
+ readonly launch_error: {
748
+ readonly code: string;
749
+ readonly message_digest: CanonicalResultDigest;
750
+ };
751
+ };
752
+ readonly stdout: {
753
+ readonly digest: CanonicalResultDigest;
754
+ readonly byte_length: number;
755
+ readonly truncated: boolean;
756
+ };
757
+ readonly stderr: {
758
+ readonly digest: CanonicalResultDigest;
759
+ readonly byte_length: number;
760
+ readonly truncated: boolean;
761
+ };
762
+ readonly truncation_policy: {
763
+ readonly kind: "digest_full_stream_diagnostics_only";
764
+ readonly raw_output_retained_bytes: 0;
765
+ readonly diagnostic_summary_max_bytes: number;
766
+ readonly diagnostic_line_max_bytes: number;
767
+ };
768
+ readonly observation_policy_digest: CanonicalResultDigest;
769
+ readonly workspace_observation_digest: CanonicalResultDigest;
770
+ readonly service_invocation: {
771
+ readonly service_instance_id: string;
772
+ readonly invocation_id: string;
773
+ };
774
+ readonly request_identity: {
775
+ readonly request_digest: CanonicalResultDigest;
776
+ readonly command_digest: CanonicalResultDigest;
777
+ readonly environment_digest: CanonicalResultDigest;
778
+ readonly authority_descriptor_digest: CanonicalResultDigest;
779
+ readonly launch_descriptor_digest: CanonicalResultDigest;
780
+ };
781
+ readonly supplied_environment: {
782
+ readonly inherit_parent: false;
783
+ readonly startup_files: false;
784
+ readonly variable_names: readonly string[];
785
+ };
786
+ readonly shell_policy: {
787
+ readonly executable: "bash";
788
+ readonly arguments: readonly ["--noprofile", "--norc", "-c"];
789
+ };
790
+ readonly network_policy: {
791
+ readonly mode: "deny_all" | "allow";
792
+ readonly enforced: boolean;
793
+ readonly enforcement_kind: "configured_adapter" | "not_required";
794
+ readonly enforcement_digest: CanonicalResultDigest | null;
795
+ readonly enforcement_descriptor: {
796
+ readonly schema_version: "intentdna.verifier_network_enforcement.v1";
797
+ readonly mode: "deny_all";
798
+ readonly adapter_kind: string;
799
+ readonly adapter_version: string;
800
+ readonly configuration_digest: CanonicalResultDigest;
801
+ readonly authority_descriptor_digest: CanonicalResultDigest;
802
+ readonly request_digest: CanonicalResultDigest;
803
+ } | null;
804
+ };
805
+ readonly execution_authority: {
806
+ readonly authority_instance_id: string;
807
+ readonly authority_descriptor_digest: CanonicalResultDigest;
808
+ readonly adapter_kind: string;
809
+ readonly adapter_version: string;
810
+ readonly configuration_digest: CanonicalResultDigest;
811
+ readonly process_tree_drained: true;
812
+ };
813
+ }
814
+ export interface CanonicalVerifierEvidenceRef {
815
+ readonly kind: "verifier_evidence";
816
+ readonly verifier_id: string;
817
+ readonly evidence_digest: CanonicalResultDigest;
818
+ readonly artifact_capture: ArtifactCaptureRef | null;
819
+ readonly workspace_observation: CanonicalWorkspaceObservation | null;
820
+ readonly execution_receipt: CanonicalVerifierExecutionReceipt | null;
821
+ }
822
+ /** Immutable evidence only; mutable workspace paths are intentionally absent. */
823
+ export type CanonicalEvidenceRef = {
824
+ readonly kind: "artifact_capture";
825
+ readonly capture: ArtifactCaptureRef;
826
+ } | {
827
+ readonly kind: "submission";
828
+ readonly submission_key_digest: CanonicalResultDigest;
829
+ readonly submission_digest: CanonicalResultDigest;
830
+ } | {
831
+ readonly kind: "result";
832
+ readonly result: CanonicalResultRef;
833
+ } | {
834
+ readonly kind: "caller_attestation";
835
+ readonly attestation_ref: string;
836
+ readonly attestation_digest: CanonicalResultDigest;
837
+ readonly payload?: CanonicalCallerAttestationPayload;
838
+ } | {
839
+ readonly kind: "worker_stopped";
840
+ readonly receipt: CanonicalWorkerStopReceipt;
841
+ } | CanonicalVerifierEvidenceRef;
842
+ export interface CanonicalVerificationResult {
843
+ readonly verifier_id: string;
844
+ readonly authority: "service" | "additional";
845
+ readonly passed: boolean;
846
+ readonly reason_code: string;
847
+ readonly evidence_refs: readonly CanonicalVerifierEvidenceRef[];
848
+ readonly domain_value: JsonValue | null;
849
+ }
850
+ /** Full immutable authority for one terminal canonical attempt. */
851
+ export interface CanonicalCommittedResult extends ActivationKey {
852
+ readonly schema_version: typeof CANONICAL_RESULT_SCHEMA_VERSION;
853
+ readonly result_id: ResultId;
854
+ readonly attempt_id: AttemptId;
855
+ readonly executor: AttemptExecutor;
856
+ readonly terminal_outcome: CanonicalAttemptOutcome;
857
+ readonly outputs: readonly CanonicalResultOutput[];
858
+ readonly started_at: string;
859
+ readonly completed_at: string;
860
+ readonly committed_at: string;
861
+ readonly stdout_reference: CanonicalEvidenceRef | null;
862
+ readonly stderr_reference: CanonicalEvidenceRef | null;
863
+ readonly evidence_refs: readonly CanonicalEvidenceRef[];
864
+ readonly verification_results: readonly CanonicalVerificationResult[];
865
+ readonly system_origin?: CanonicalSystemOrigin | null;
866
+ }
292
867
  export {};
@@ -1,10 +1,28 @@
1
- /**
2
- * Foundation Runtime contracts.
3
- *
4
- * These types describe durable run truth and the boundary to one disposable
5
- * worker session. They intentionally contain no storage, scheduling, provider,
6
- * CLI, or Hook behavior.
7
- */
1
+ export const CALLER_ATTESTATION_SCHEMA_VERSION = "intentdna.harness_caller_attestation.v1";
2
+ export const CANONICAL_ACTIVATION_STATE_VALUES = [
3
+ "dormant",
4
+ "dependency_blocked",
5
+ "ready",
6
+ "claimed",
7
+ "running",
8
+ "waiting_for_human",
9
+ "succeeded",
10
+ "failed",
11
+ "skipped",
12
+ "cancelled",
13
+ ];
14
+ export const CANONICAL_ACTIVATION_STATE_TRANSITIONS = {
15
+ dormant: ["dependency_blocked", "ready", "skipped", "cancelled"],
16
+ dependency_blocked: ["ready", "skipped", "cancelled"],
17
+ ready: ["claimed", "waiting_for_human", "skipped", "cancelled"],
18
+ claimed: ["ready", "running", "cancelled"],
19
+ running: ["ready", "succeeded", "failed", "cancelled"],
20
+ waiting_for_human: ["succeeded", "cancelled"],
21
+ succeeded: [],
22
+ failed: [],
23
+ skipped: [],
24
+ cancelled: [],
25
+ };
8
26
  export const TASK_STATE_VALUES = [
9
27
  "dependency_blocked",
10
28
  "ready",
@@ -66,3 +84,36 @@ export const RUNTIME_EVENT_TYPE_VALUES = [
66
84
  "workflow_round_advanced",
67
85
  "workflow_round_completed",
68
86
  ];
87
+ export const CANONICAL_RUNTIME_EVENT_TYPE_VALUES = [
88
+ "run_created",
89
+ "run_cancel_requested",
90
+ "run_closed",
91
+ "run_terminal",
92
+ "activation_state_changed",
93
+ "attempt_claimed",
94
+ "attempt_attached",
95
+ "workspace_planned",
96
+ "workspace_allocated",
97
+ "attempt_heartbeat",
98
+ "attempt_released",
99
+ "attempt_started",
100
+ "attempt_stop_requested",
101
+ "attempt_terminal",
102
+ "handoff_resolved",
103
+ "artifact_captured",
104
+ "result_committed",
105
+ "gate_evaluated",
106
+ "decision_evaluated",
107
+ "route_selected",
108
+ "retry_segment_scheduled",
109
+ "retry_scheduled",
110
+ "interaction_requested",
111
+ "interaction_submitted",
112
+ ];
113
+ export const CANONICAL_RESULT_SCHEMA_VERSION = "intentdna.canonical_result.v2";
114
+ export const CANONICAL_ATTEMPT_STOP_INTENT_SCHEMA_VERSION = "intentdna.attempt_stop_intent.v1";
115
+ export const CANONICAL_WORKER_STOP_RECEIPT_SCHEMA_VERSION = "intentdna.worker_stop_receipt.v1";
116
+ export const CANONICAL_WORKER_ALREADY_STOPPED_EVIDENCE_SCHEMA_VERSION = "intentdna.worker_already_stopped_evidence.v1";
117
+ export const CANONICAL_WORKER_NONLAUNCH_ATTESTATION_SCHEMA_VERSION = "intentdna.worker_nonlaunch_attestation.v1";
118
+ export const CANONICAL_WORKSPACE_OBSERVATION_SCHEMA_VERSION = "intentdna.workspace_observation.v2";
119
+ export const CANONICAL_VERIFIER_EXECUTION_RECEIPT_SCHEMA_VERSION = "intentdna.verifier_execution_receipt.v1";