@oscharko-dev/keiko-contracts 0.2.7 → 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.
Files changed (108) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/bff-wire.d.ts +86 -19
  3. package/dist/bff-wire.d.ts.map +1 -1
  4. package/dist/command-runner.d.ts +81 -0
  5. package/dist/command-runner.d.ts.map +1 -0
  6. package/dist/command-runner.js +209 -0
  7. package/dist/container-runtime.d.ts +125 -0
  8. package/dist/container-runtime.d.ts.map +1 -0
  9. package/dist/container-runtime.js +287 -0
  10. package/dist/context-engineering.js +2 -2
  11. package/dist/discussion-intelligence.d.ts +70 -0
  12. package/dist/discussion-intelligence.d.ts.map +1 -0
  13. package/dist/discussion-intelligence.js +440 -0
  14. package/dist/editor-agent-governance.d.ts +65 -0
  15. package/dist/editor-agent-governance.d.ts.map +1 -0
  16. package/dist/editor-agent-governance.js +180 -0
  17. package/dist/editor-agent.d.ts +29 -1
  18. package/dist/editor-agent.d.ts.map +1 -1
  19. package/dist/editor-agent.js +183 -6
  20. package/dist/editor-builtin-capabilities.d.ts +13 -0
  21. package/dist/editor-builtin-capabilities.d.ts.map +1 -0
  22. package/dist/editor-builtin-capabilities.js +135 -0
  23. package/dist/editor-language-mode-map.d.ts +11 -0
  24. package/dist/editor-language-mode-map.d.ts.map +1 -0
  25. package/dist/editor-language-mode-map.js +89 -0
  26. package/dist/editor-layout.d.ts +37 -0
  27. package/dist/editor-layout.d.ts.map +1 -1
  28. package/dist/editor-layout.js +125 -8
  29. package/dist/editor-workspace-path.d.ts +20 -0
  30. package/dist/editor-workspace-path.d.ts.map +1 -0
  31. package/dist/editor-workspace-path.js +133 -0
  32. package/dist/evidence.d.ts +3 -1
  33. package/dist/evidence.d.ts.map +1 -1
  34. package/dist/gateway.d.ts +72 -3
  35. package/dist/gateway.d.ts.map +1 -1
  36. package/dist/gateway.js +73 -3
  37. package/dist/git-commit-intent.d.ts +28 -0
  38. package/dist/git-commit-intent.d.ts.map +1 -0
  39. package/dist/git-commit-intent.js +155 -0
  40. package/dist/git-commit-policy.d.ts +29 -0
  41. package/dist/git-commit-policy.d.ts.map +1 -0
  42. package/dist/git-commit-policy.js +173 -0
  43. package/dist/git-delivery-action-sheet.d.ts +157 -0
  44. package/dist/git-delivery-action-sheet.d.ts.map +1 -0
  45. package/dist/git-delivery-action-sheet.js +430 -0
  46. package/dist/git-delivery-evidence.d.ts +92 -0
  47. package/dist/git-delivery-evidence.d.ts.map +1 -0
  48. package/dist/git-delivery-evidence.js +272 -0
  49. package/dist/git-delivery-policy.d.ts +40 -0
  50. package/dist/git-delivery-policy.d.ts.map +1 -0
  51. package/dist/git-delivery-policy.js +183 -0
  52. package/dist/git-delivery-provider.d.ts +53 -0
  53. package/dist/git-delivery-provider.d.ts.map +1 -0
  54. package/dist/git-delivery-provider.js +96 -0
  55. package/dist/git-delivery.d.ts +202 -0
  56. package/dist/git-delivery.d.ts.map +1 -0
  57. package/dist/git-delivery.js +410 -0
  58. package/dist/git-history.d.ts +27 -0
  59. package/dist/git-history.d.ts.map +1 -0
  60. package/dist/git-history.js +73 -0
  61. package/dist/git-merge.d.ts +67 -0
  62. package/dist/git-merge.d.ts.map +1 -0
  63. package/dist/git-merge.js +323 -0
  64. package/dist/git-pull-request.d.ts +112 -0
  65. package/dist/git-pull-request.d.ts.map +1 -0
  66. package/dist/git-pull-request.js +351 -0
  67. package/dist/git-repository-agent.d.ts +46 -0
  68. package/dist/git-repository-agent.d.ts.map +1 -0
  69. package/dist/git-repository-agent.js +198 -0
  70. package/dist/git-repository-summary.d.ts +54 -0
  71. package/dist/git-repository-summary.d.ts.map +1 -0
  72. package/dist/git-repository-summary.js +105 -0
  73. package/dist/git-repository.d.ts +60 -0
  74. package/dist/git-repository.d.ts.map +1 -0
  75. package/dist/git-repository.js +106 -0
  76. package/dist/git-sync.d.ts +49 -0
  77. package/dist/git-sync.d.ts.map +1 -0
  78. package/dist/git-sync.js +110 -0
  79. package/dist/index.d.ts +63 -9
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +33 -6
  82. package/dist/lsp-process.d.ts +38 -0
  83. package/dist/lsp-process.d.ts.map +1 -0
  84. package/dist/lsp-process.js +103 -0
  85. package/dist/prompt-enhancer-analyzer.d.ts.map +1 -1
  86. package/dist/prompt-enhancer-analyzer.js +198 -22
  87. package/dist/runtime-capabilities.d.ts +44 -0
  88. package/dist/runtime-capabilities.d.ts.map +1 -0
  89. package/dist/runtime-capabilities.js +141 -0
  90. package/dist/task-workspace.d.ts +302 -0
  91. package/dist/task-workspace.d.ts.map +1 -0
  92. package/dist/task-workspace.js +1236 -0
  93. package/dist/voice-action-intent.d.ts +86 -0
  94. package/dist/voice-action-intent.d.ts.map +1 -0
  95. package/dist/voice-action-intent.js +387 -0
  96. package/dist/voice-playback.d.ts +50 -0
  97. package/dist/voice-playback.d.ts.map +1 -0
  98. package/dist/voice-playback.js +240 -0
  99. package/dist/voice-protocol.d.ts +165 -0
  100. package/dist/voice-protocol.d.ts.map +1 -0
  101. package/dist/voice-protocol.js +312 -0
  102. package/dist/voice-transcript.d.ts +57 -0
  103. package/dist/voice-transcript.d.ts.map +1 -0
  104. package/dist/voice-transcript.js +221 -0
  105. package/package.json +5 -1
  106. package/dist/conversation-budget.d.ts +0 -37
  107. package/dist/conversation-budget.d.ts.map +0 -1
  108. package/dist/conversation-budget.js +0 -97
@@ -0,0 +1,202 @@
1
+ export declare const GIT_DELIVERY_SCHEMA_VERSION: "1";
2
+ export type GitDeliveryActionKind = "branch-create" | "branch-switch" | "stage" | "unstage" | "commit" | "push" | "pr-create" | "pr-update" | "merge" | "abort" | "recovery";
3
+ export declare const GIT_DELIVERY_ACTION_KINDS: readonly GitDeliveryActionKind[];
4
+ export type GitDeliveryRiskClass = "local-mutation" | "publish" | "protected-or-merge" | "recovery-or-rewrite";
5
+ export declare const GIT_DELIVERY_RISK_CLASSES: readonly GitDeliveryRiskClass[];
6
+ export declare const GIT_DELIVERY_RISK_CLASS_SEVERITY: Readonly<Record<GitDeliveryRiskClass, number>>;
7
+ export declare const GIT_DELIVERY_ACTION_RISK_DEFAULTS: Readonly<Record<GitDeliveryActionKind, GitDeliveryRiskClass>>;
8
+ export interface GitDeliveryBranchCreateInputs {
9
+ readonly kind: "branch-create";
10
+ readonly branchName: string;
11
+ readonly baseBranchName: string;
12
+ readonly startPointRefHash: string;
13
+ }
14
+ export interface GitDeliveryBranchSwitchInputs {
15
+ readonly kind: "branch-switch";
16
+ readonly branchName: string;
17
+ }
18
+ export interface GitDeliveryStageInputs {
19
+ readonly kind: "stage";
20
+ readonly pathCount: number;
21
+ readonly includesUntracked: boolean;
22
+ }
23
+ export interface GitDeliveryUnstageInputs {
24
+ readonly kind: "unstage";
25
+ readonly pathCount: number;
26
+ }
27
+ export interface GitDeliveryCommitInputs {
28
+ readonly kind: "commit";
29
+ readonly messageByteLength: number;
30
+ readonly stagedPathCount: number;
31
+ readonly allowEmptyCommit: boolean;
32
+ }
33
+ export interface GitDeliveryPushInputs {
34
+ readonly kind: "push";
35
+ readonly sourceBranchName: string;
36
+ readonly remoteAlias: string;
37
+ readonly remoteBranchName: string;
38
+ readonly forcePush: boolean;
39
+ readonly setUpstreamTracking: boolean;
40
+ }
41
+ export interface GitDeliveryPrCreateInputs {
42
+ readonly kind: "pr-create";
43
+ readonly headBranchName: string;
44
+ readonly baseBranchName: string;
45
+ readonly titleByteLength: number;
46
+ readonly bodyByteLength: number;
47
+ readonly isDraft: boolean;
48
+ }
49
+ export interface GitDeliveryPrUpdateInputs {
50
+ readonly kind: "pr-update";
51
+ readonly prExternalId: string;
52
+ readonly headBranchName: string;
53
+ readonly baseBranchName: string;
54
+ readonly titleByteLength: number;
55
+ readonly bodyByteLength: number;
56
+ readonly convertToDraft: boolean;
57
+ readonly convertFromDraft: boolean;
58
+ }
59
+ export type GitDeliveryMergeStrategyHint = "squash" | "rebase" | "merge-commit" | "provider-default";
60
+ export declare const GIT_DELIVERY_MERGE_STRATEGY_HINTS: readonly GitDeliveryMergeStrategyHint[];
61
+ export interface GitDeliveryMergeInputs {
62
+ readonly kind: "merge";
63
+ readonly prExternalId: string;
64
+ readonly mergeStrategyHint: GitDeliveryMergeStrategyHint;
65
+ readonly deleteBranchAfterMerge: boolean;
66
+ }
67
+ export type GitDeliveryAbortableOperation = "merge" | "rebase" | "cherry-pick" | "revert" | "bisect";
68
+ export declare const GIT_DELIVERY_ABORTABLE_OPERATIONS: readonly GitDeliveryAbortableOperation[];
69
+ export interface GitDeliveryAbortInputs {
70
+ readonly kind: "abort";
71
+ readonly operationToAbort: GitDeliveryAbortableOperation;
72
+ readonly preserveIndexChanges: boolean;
73
+ }
74
+ export type GitDeliveryRecoveryStrategyHint = "soft-reset" | "mixed-reset" | "stash-and-reset" | "restore-index";
75
+ export declare const GIT_DELIVERY_RECOVERY_STRATEGY_HINTS: readonly GitDeliveryRecoveryStrategyHint[];
76
+ export interface GitDeliveryRecoveryInputs {
77
+ readonly kind: "recovery";
78
+ readonly recoveryStrategyHint: GitDeliveryRecoveryStrategyHint;
79
+ readonly targetRefHash: string;
80
+ readonly affectedPathCount: number;
81
+ }
82
+ export type GitDeliveryResolvedInputs = GitDeliveryBranchCreateInputs | GitDeliveryBranchSwitchInputs | GitDeliveryStageInputs | GitDeliveryUnstageInputs | GitDeliveryCommitInputs | GitDeliveryPushInputs | GitDeliveryPrCreateInputs | GitDeliveryPrUpdateInputs | GitDeliveryMergeInputs | GitDeliveryAbortInputs | GitDeliveryRecoveryInputs;
83
+ export interface GitDeliveryApprovalNotRequired {
84
+ readonly required: false;
85
+ }
86
+ export interface GitDeliveryApprovalGranted {
87
+ readonly required: true;
88
+ readonly approvalTokenHash: string;
89
+ readonly approvedByUserId: string;
90
+ readonly approvedAtMs: number;
91
+ readonly expiresAtMs?: number | undefined;
92
+ }
93
+ export type GitDeliveryApprovalRequirement = GitDeliveryApprovalNotRequired | GitDeliveryApprovalGranted;
94
+ export type GitDeliveryProviderCapability = "branch-protection" | "draft-pr" | "required-checks" | "merge-queue" | "protected-branch-delete";
95
+ export declare const GIT_DELIVERY_PROVIDER_CAPABILITIES: readonly GitDeliveryProviderCapability[];
96
+ export type GitDeliveryBranchMatchKind = "exact" | "prefix";
97
+ export declare const GIT_DELIVERY_BRANCH_MATCH_KINDS: readonly GitDeliveryBranchMatchKind[];
98
+ export interface GitDeliveryBranchPattern {
99
+ readonly matchKind: GitDeliveryBranchMatchKind;
100
+ readonly value: string;
101
+ }
102
+ export interface GitDeliveryBranchPatternConstraint {
103
+ readonly kind: "branch-pattern";
104
+ readonly patterns: readonly GitDeliveryBranchPattern[];
105
+ }
106
+ export interface GitDeliveryProviderCapabilityConstraint {
107
+ readonly kind: "provider-capability";
108
+ readonly capability: GitDeliveryProviderCapability;
109
+ }
110
+ export interface GitDeliveryRiskClassCeilingConstraint {
111
+ readonly kind: "risk-class-ceiling";
112
+ readonly maxRiskClass: GitDeliveryRiskClass;
113
+ }
114
+ export type GitDeliveryConstraint = GitDeliveryBranchPatternConstraint | GitDeliveryProviderCapabilityConstraint | GitDeliveryRiskClassCeilingConstraint;
115
+ export type GitDeliveryBlockReason = "policy-pack-blocked" | "protected-branch" | "provider-capability-absent" | "approval-expired" | "risk-class-ceiling" | "no-applicable-rule";
116
+ export declare const GIT_DELIVERY_BLOCK_REASONS: readonly GitDeliveryBlockReason[];
117
+ export type GitDeliveryMergeBlockReason = "checks-failing" | "approvals-missing" | "conflicts" | "branch-protection" | "merge-queue-position" | "provider-policy";
118
+ export declare const GIT_DELIVERY_MERGE_BLOCK_REASONS: readonly GitDeliveryMergeBlockReason[];
119
+ export type GitDeliveryPolicyDecision = {
120
+ readonly outcome: "allowed";
121
+ } | {
122
+ readonly outcome: "blocked";
123
+ readonly reason: GitDeliveryBlockReason;
124
+ } | {
125
+ readonly outcome: "approval-gated";
126
+ readonly requiredApprovers: readonly string[];
127
+ } | {
128
+ readonly outcome: "constrained";
129
+ readonly constraints: readonly GitDeliveryConstraint[];
130
+ };
131
+ export interface GitDeliveryActionPreview {
132
+ readonly schemaVersion: typeof GIT_DELIVERY_SCHEMA_VERSION;
133
+ readonly affectedBranchName?: string | undefined;
134
+ readonly estimatedFileCount?: number | undefined;
135
+ readonly estimatedBytesDelta?: number | undefined;
136
+ readonly wouldCreateRemoteBranch: boolean;
137
+ readonly wouldTriggerChecks: boolean;
138
+ }
139
+ export type GitDeliveryExecutionOutcome = "succeeded" | "failed" | "aborted" | "partial";
140
+ export declare const GIT_DELIVERY_EXECUTION_OUTCOMES: readonly GitDeliveryExecutionOutcome[];
141
+ export type GitDeliveryExecutionErrorCode = "provider-rejected" | "network-failure" | "conflict" | "precondition-failed" | "timeout" | "internal-error";
142
+ export declare const GIT_DELIVERY_EXECUTION_ERROR_CODES: readonly GitDeliveryExecutionErrorCode[];
143
+ export interface GitDeliveryPartialDetail {
144
+ readonly attemptedUnitCount: number;
145
+ readonly succeededUnitCount: number;
146
+ }
147
+ export interface GitDeliveryExecutionResult {
148
+ readonly schemaVersion: typeof GIT_DELIVERY_SCHEMA_VERSION;
149
+ readonly outcome: GitDeliveryExecutionOutcome;
150
+ readonly durationMs: number;
151
+ readonly externalId?: string | undefined;
152
+ readonly errorCode?: GitDeliveryExecutionErrorCode | undefined;
153
+ readonly partialDetail?: GitDeliveryPartialDetail | undefined;
154
+ }
155
+ export interface GitDeliveryEvidenceRef {
156
+ readonly sourceGroundedRunId: string;
157
+ readonly evidenceManifestStableIdHash: string;
158
+ }
159
+ export interface GitDeliveryActionEnvelopeFor<I extends GitDeliveryResolvedInputs> {
160
+ readonly schemaVersion: typeof GIT_DELIVERY_SCHEMA_VERSION;
161
+ readonly actionId: string;
162
+ readonly kind: I["kind"];
163
+ readonly resolvedInputs: I;
164
+ readonly policyDecision: GitDeliveryPolicyDecision;
165
+ readonly approvalRequirement: GitDeliveryApprovalRequirement;
166
+ readonly preview?: GitDeliveryActionPreview | undefined;
167
+ readonly executionResult?: GitDeliveryExecutionResult | undefined;
168
+ readonly evidenceRef?: GitDeliveryEvidenceRef | undefined;
169
+ }
170
+ export type GitDeliveryActionEnvelope = GitDeliveryActionEnvelopeFor<GitDeliveryBranchCreateInputs> | GitDeliveryActionEnvelopeFor<GitDeliveryBranchSwitchInputs> | GitDeliveryActionEnvelopeFor<GitDeliveryStageInputs> | GitDeliveryActionEnvelopeFor<GitDeliveryUnstageInputs> | GitDeliveryActionEnvelopeFor<GitDeliveryCommitInputs> | GitDeliveryActionEnvelopeFor<GitDeliveryPushInputs> | GitDeliveryActionEnvelopeFor<GitDeliveryPrCreateInputs> | GitDeliveryActionEnvelopeFor<GitDeliveryPrUpdateInputs> | GitDeliveryActionEnvelopeFor<GitDeliveryMergeInputs> | GitDeliveryActionEnvelopeFor<GitDeliveryAbortInputs> | GitDeliveryActionEnvelopeFor<GitDeliveryRecoveryInputs>;
171
+ export type GitDeliveryParseResult<T> = {
172
+ readonly ok: true;
173
+ readonly value: T;
174
+ } | {
175
+ readonly ok: false;
176
+ readonly errors: readonly string[];
177
+ };
178
+ export declare function isGitDeliveryActionKind(value: unknown): value is GitDeliveryActionKind;
179
+ export declare function isGitDeliveryRiskClass(value: unknown): value is GitDeliveryRiskClass;
180
+ export declare function isGitDeliveryProviderCapability(value: unknown): value is GitDeliveryProviderCapability;
181
+ export declare function isGitDeliveryBranchMatchKind(value: unknown): value is GitDeliveryBranchMatchKind;
182
+ export declare function isGitDeliveryBlockReason(value: unknown): value is GitDeliveryBlockReason;
183
+ export declare function isGitDeliveryMergeBlockReason(value: unknown): value is GitDeliveryMergeBlockReason;
184
+ export declare function isGitDeliveryMergeStrategyHint(value: unknown): value is GitDeliveryMergeStrategyHint;
185
+ export declare function isGitDeliveryAbortableOperation(value: unknown): value is GitDeliveryAbortableOperation;
186
+ export declare function isGitDeliveryRecoveryStrategyHint(value: unknown): value is GitDeliveryRecoveryStrategyHint;
187
+ export declare function isGitDeliveryExecutionOutcome(value: unknown): value is GitDeliveryExecutionOutcome;
188
+ export declare function isGitDeliveryExecutionErrorCode(value: unknown): value is GitDeliveryExecutionErrorCode;
189
+ export declare function isGitDeliveryBranchPattern(value: unknown): value is GitDeliveryBranchPattern;
190
+ export declare function isGitDeliveryConstraint(value: unknown): value is GitDeliveryConstraint;
191
+ export declare function isGitDeliveryApprovalRequirement(value: unknown): value is GitDeliveryApprovalRequirement;
192
+ export declare function isGitDeliveryPolicyDecision(value: unknown): value is GitDeliveryPolicyDecision;
193
+ export declare function isGitDeliveryEvidenceRef(value: unknown): value is GitDeliveryEvidenceRef;
194
+ export declare function isGitDeliveryExecutionResult(value: unknown): value is GitDeliveryExecutionResult;
195
+ export declare function parseGitDeliveryResolvedInputs(value: unknown): GitDeliveryParseResult<GitDeliveryResolvedInputs>;
196
+ export declare function parseGitDeliveryActionEnvelope(value: unknown): GitDeliveryParseResult<GitDeliveryActionEnvelope>;
197
+ export declare function gitDeliveryDefaultRiskClass(kind: string): GitDeliveryRiskClass;
198
+ export declare function gitDeliveryRiskClassForInputs(inputs: GitDeliveryResolvedInputs): GitDeliveryRiskClass;
199
+ export declare function gitDeliveryRiskClassWithinCeiling(actionKind: GitDeliveryActionKind, ceiling: GitDeliveryRiskClass): boolean;
200
+ export declare function gitDeliveryBranchNameMatchesPattern(branchName: string, pattern: GitDeliveryBranchPattern): boolean;
201
+ export declare function gitDeliveryBranchNameMatchesAny(branchName: string, patterns: readonly GitDeliveryBranchPattern[]): boolean;
202
+ //# sourceMappingURL=git-delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-delivery.d.ts","sourceRoot":"","sources":["../src/git-delivery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,410 @@
1
+ // Public type contracts for the governed Git delivery surface (Issue #471, Epic #470).
2
+ // Ownership: git-delivery domain. Disjoint from workflow-handoff.ts (one-shot agent invocation)
3
+ // and editor-agent.ts (editor bridge). Leaf-package rules (ADR-0019): pure types and frozen
4
+ // const tables only. No IO, no clock, no crypto, no randomness. Opaque hex hashes are produced
5
+ // by callers (sha256Hex in stableId.ts or equivalent). Relative imports end in ".js".
6
+ //
7
+ // This is the CORE atom module for the git-delivery surface. It imports NOTHING from its two
8
+ // siblings (git-delivery-policy.ts / git-delivery-provider.ts). The siblings import FROM here, so
9
+ // the dependency graph is a one-directional DAG with no cycles (verified by arch:check). The only
10
+ // internal import is `./workflow-handoff.js` for `isApprovalTokenShape` (a legal intra-package
11
+ // relative import; keiko-contracts modules may reference each other).
12
+ import { isApprovalTokenShape } from "./workflow-handoff.js";
13
+ export const GIT_DELIVERY_SCHEMA_VERSION = "1";
14
+ export const GIT_DELIVERY_ACTION_KINDS = [
15
+ "branch-create",
16
+ "branch-switch",
17
+ "stage",
18
+ "unstage",
19
+ "commit",
20
+ "push",
21
+ "pr-create",
22
+ "pr-update",
23
+ "merge",
24
+ "abort",
25
+ "recovery",
26
+ ];
27
+ export const GIT_DELIVERY_RISK_CLASSES = [
28
+ "local-mutation",
29
+ "publish",
30
+ "protected-or-merge",
31
+ "recovery-or-rewrite",
32
+ ];
33
+ // Ordinal severity. Higher ordinal = higher risk. Never compare ordinals by action name string.
34
+ export const GIT_DELIVERY_RISK_CLASS_SEVERITY = {
35
+ "local-mutation": 1,
36
+ publish: 2,
37
+ "protected-or-merge": 3,
38
+ "recovery-or-rewrite": 4,
39
+ };
40
+ // Default risk class per action kind. Keys are ordered to match GIT_DELIVERY_ACTION_KINDS exactly.
41
+ // Unknown kinds (post-deserialization) default to the highest class via gitDeliveryDefaultRiskClass
42
+ // — this table covers all known kinds exactly.
43
+ export const GIT_DELIVERY_ACTION_RISK_DEFAULTS = {
44
+ "branch-create": "local-mutation",
45
+ "branch-switch": "local-mutation",
46
+ stage: "local-mutation",
47
+ unstage: "local-mutation",
48
+ commit: "local-mutation",
49
+ push: "publish",
50
+ "pr-create": "protected-or-merge",
51
+ "pr-update": "protected-or-merge",
52
+ merge: "protected-or-merge",
53
+ abort: "local-mutation",
54
+ recovery: "recovery-or-rewrite",
55
+ };
56
+ export const GIT_DELIVERY_MERGE_STRATEGY_HINTS = [
57
+ "squash",
58
+ "rebase",
59
+ "merge-commit",
60
+ "provider-default",
61
+ ];
62
+ export const GIT_DELIVERY_ABORTABLE_OPERATIONS = [
63
+ "merge",
64
+ "rebase",
65
+ "cherry-pick",
66
+ "revert",
67
+ "bisect",
68
+ ];
69
+ export const GIT_DELIVERY_RECOVERY_STRATEGY_HINTS = [
70
+ "soft-reset",
71
+ "mixed-reset",
72
+ "stash-and-reset",
73
+ "restore-index",
74
+ ];
75
+ export const GIT_DELIVERY_PROVIDER_CAPABILITIES = [
76
+ "branch-protection",
77
+ "draft-pr",
78
+ "required-checks",
79
+ "merge-queue",
80
+ "protected-branch-delete",
81
+ ];
82
+ export const GIT_DELIVERY_BRANCH_MATCH_KINDS = [
83
+ "exact",
84
+ "prefix",
85
+ ];
86
+ export const GIT_DELIVERY_BLOCK_REASONS = [
87
+ "policy-pack-blocked",
88
+ "protected-branch",
89
+ "provider-capability-absent",
90
+ "approval-expired",
91
+ "risk-class-ceiling",
92
+ "no-applicable-rule",
93
+ ];
94
+ export const GIT_DELIVERY_MERGE_BLOCK_REASONS = [
95
+ "checks-failing",
96
+ "approvals-missing",
97
+ "conflicts",
98
+ "branch-protection",
99
+ "merge-queue-position",
100
+ "provider-policy",
101
+ ];
102
+ export const GIT_DELIVERY_EXECUTION_OUTCOMES = [
103
+ "succeeded",
104
+ "failed",
105
+ "aborted",
106
+ "partial",
107
+ ];
108
+ export const GIT_DELIVERY_EXECUTION_ERROR_CODES = [
109
+ "provider-rejected",
110
+ "network-failure",
111
+ "conflict",
112
+ "precondition-failed",
113
+ "timeout",
114
+ "internal-error",
115
+ ];
116
+ // ─── Private predicate helpers ───────────────────────────────────────────────────
117
+ function isRecord(value) {
118
+ return typeof value === "object" && value !== null && !Array.isArray(value);
119
+ }
120
+ function isString(value) {
121
+ return typeof value === "string";
122
+ }
123
+ function isNonEmptyString(value) {
124
+ return typeof value === "string" && value.length > 0;
125
+ }
126
+ function isNonNegativeInteger(value) {
127
+ return typeof value === "number" && Number.isInteger(value) && value >= 0;
128
+ }
129
+ function isBoolean(value) {
130
+ return typeof value === "boolean";
131
+ }
132
+ function isStringArray(value) {
133
+ return Array.isArray(value) && value.every(isString);
134
+ }
135
+ function isUndefinedOr(check) {
136
+ return (v) => v === undefined || check(v);
137
+ }
138
+ // ─── Exported guards ─────────────────────────────────────────────────────────────
139
+ export function isGitDeliveryActionKind(value) {
140
+ return isString(value) && GIT_DELIVERY_ACTION_KINDS.includes(value);
141
+ }
142
+ export function isGitDeliveryRiskClass(value) {
143
+ return isString(value) && GIT_DELIVERY_RISK_CLASSES.includes(value);
144
+ }
145
+ export function isGitDeliveryProviderCapability(value) {
146
+ return (isString(value) && GIT_DELIVERY_PROVIDER_CAPABILITIES.includes(value));
147
+ }
148
+ export function isGitDeliveryBranchMatchKind(value) {
149
+ return isString(value) && GIT_DELIVERY_BRANCH_MATCH_KINDS.includes(value);
150
+ }
151
+ export function isGitDeliveryBlockReason(value) {
152
+ return isString(value) && GIT_DELIVERY_BLOCK_REASONS.includes(value);
153
+ }
154
+ export function isGitDeliveryMergeBlockReason(value) {
155
+ return isString(value) && GIT_DELIVERY_MERGE_BLOCK_REASONS.includes(value);
156
+ }
157
+ export function isGitDeliveryMergeStrategyHint(value) {
158
+ return (isString(value) && GIT_DELIVERY_MERGE_STRATEGY_HINTS.includes(value));
159
+ }
160
+ export function isGitDeliveryAbortableOperation(value) {
161
+ return (isString(value) && GIT_DELIVERY_ABORTABLE_OPERATIONS.includes(value));
162
+ }
163
+ export function isGitDeliveryRecoveryStrategyHint(value) {
164
+ return (isString(value) && GIT_DELIVERY_RECOVERY_STRATEGY_HINTS.includes(value));
165
+ }
166
+ export function isGitDeliveryExecutionOutcome(value) {
167
+ return isString(value) && GIT_DELIVERY_EXECUTION_OUTCOMES.includes(value);
168
+ }
169
+ export function isGitDeliveryExecutionErrorCode(value) {
170
+ return (isString(value) && GIT_DELIVERY_EXECUTION_ERROR_CODES.includes(value));
171
+ }
172
+ export function isGitDeliveryBranchPattern(value) {
173
+ return (isRecord(value) &&
174
+ isGitDeliveryBranchMatchKind(value.matchKind) &&
175
+ isNonEmptyString(value.value));
176
+ }
177
+ export function isGitDeliveryConstraint(value) {
178
+ if (!isRecord(value)) {
179
+ return false;
180
+ }
181
+ if (value.kind === "branch-pattern") {
182
+ return Array.isArray(value.patterns) && value.patterns.every(isGitDeliveryBranchPattern);
183
+ }
184
+ if (value.kind === "provider-capability") {
185
+ return isGitDeliveryProviderCapability(value.capability);
186
+ }
187
+ if (value.kind === "risk-class-ceiling") {
188
+ return isGitDeliveryRiskClass(value.maxRiskClass);
189
+ }
190
+ return false;
191
+ }
192
+ function isApprovalGranted(value) {
193
+ return (value.required === true &&
194
+ isString(value.approvalTokenHash) &&
195
+ isApprovalTokenShape(value.approvalTokenHash) &&
196
+ isNonEmptyString(value.approvedByUserId) &&
197
+ isNonNegativeInteger(value.approvedAtMs) &&
198
+ isUndefinedOr(isNonNegativeInteger)(value.expiresAtMs));
199
+ }
200
+ export function isGitDeliveryApprovalRequirement(value) {
201
+ if (!isRecord(value)) {
202
+ return false;
203
+ }
204
+ if (value.required === false) {
205
+ return true;
206
+ }
207
+ return isApprovalGranted(value);
208
+ }
209
+ export function isGitDeliveryPolicyDecision(value) {
210
+ if (!isRecord(value)) {
211
+ return false;
212
+ }
213
+ if (value.outcome === "allowed") {
214
+ return true;
215
+ }
216
+ if (value.outcome === "blocked") {
217
+ return isGitDeliveryBlockReason(value.reason);
218
+ }
219
+ if (value.outcome === "approval-gated") {
220
+ return isStringArray(value.requiredApprovers);
221
+ }
222
+ if (value.outcome === "constrained") {
223
+ return Array.isArray(value.constraints) && value.constraints.every(isGitDeliveryConstraint);
224
+ }
225
+ return false;
226
+ }
227
+ export function isGitDeliveryEvidenceRef(value) {
228
+ return (isRecord(value) &&
229
+ isNonEmptyString(value.sourceGroundedRunId) &&
230
+ isNonEmptyString(value.evidenceManifestStableIdHash));
231
+ }
232
+ function isPartialDetail(value) {
233
+ return (isRecord(value) &&
234
+ isNonNegativeInteger(value.attemptedUnitCount) &&
235
+ isNonNegativeInteger(value.succeededUnitCount));
236
+ }
237
+ export function isGitDeliveryExecutionResult(value) {
238
+ return (isRecord(value) &&
239
+ value.schemaVersion === GIT_DELIVERY_SCHEMA_VERSION &&
240
+ isGitDeliveryExecutionOutcome(value.outcome) &&
241
+ isNonNegativeInteger(value.durationMs) &&
242
+ isUndefinedOr(isNonEmptyString)(value.externalId) &&
243
+ isUndefinedOr(isGitDeliveryExecutionErrorCode)(value.errorCode) &&
244
+ isUndefinedOr(isPartialDetail)(value.partialDetail));
245
+ }
246
+ function isActionPreview(value) {
247
+ return (isRecord(value) &&
248
+ value.schemaVersion === GIT_DELIVERY_SCHEMA_VERSION &&
249
+ isUndefinedOr(isNonEmptyString)(value.affectedBranchName) &&
250
+ isUndefinedOr(isNonNegativeInteger)(value.estimatedFileCount) &&
251
+ isUndefinedOr(isNonNegativeInteger)(value.estimatedBytesDelta) &&
252
+ isBoolean(value.wouldCreateRemoteBranch) &&
253
+ isBoolean(value.wouldTriggerChecks));
254
+ }
255
+ // ─── Per-kind resolved-input guards (one per kind for the dispatch lookup) ────────
256
+ function isBranchCreateInputs(value) {
257
+ return (isNonEmptyString(value.branchName) &&
258
+ isNonEmptyString(value.baseBranchName) &&
259
+ isNonEmptyString(value.startPointRefHash));
260
+ }
261
+ function isBranchSwitchInputs(value) {
262
+ return isNonEmptyString(value.branchName);
263
+ }
264
+ function isStageInputs(value) {
265
+ return isNonNegativeInteger(value.pathCount) && isBoolean(value.includesUntracked);
266
+ }
267
+ function isUnstageInputs(value) {
268
+ return isNonNegativeInteger(value.pathCount);
269
+ }
270
+ function isCommitInputs(value) {
271
+ return (isNonNegativeInteger(value.messageByteLength) &&
272
+ isNonNegativeInteger(value.stagedPathCount) &&
273
+ isBoolean(value.allowEmptyCommit));
274
+ }
275
+ function isPushInputs(value) {
276
+ return (isNonEmptyString(value.sourceBranchName) &&
277
+ isNonEmptyString(value.remoteAlias) &&
278
+ isNonEmptyString(value.remoteBranchName) &&
279
+ isBoolean(value.forcePush) &&
280
+ isBoolean(value.setUpstreamTracking));
281
+ }
282
+ function isPrCreateInputs(value) {
283
+ return (isNonEmptyString(value.headBranchName) &&
284
+ isNonEmptyString(value.baseBranchName) &&
285
+ isNonNegativeInteger(value.titleByteLength) &&
286
+ isNonNegativeInteger(value.bodyByteLength) &&
287
+ isBoolean(value.isDraft));
288
+ }
289
+ function isPrUpdateInputs(value) {
290
+ return (isNonEmptyString(value.prExternalId) &&
291
+ isNonEmptyString(value.headBranchName) &&
292
+ isNonEmptyString(value.baseBranchName) &&
293
+ isNonNegativeInteger(value.titleByteLength) &&
294
+ isNonNegativeInteger(value.bodyByteLength) &&
295
+ isBoolean(value.convertToDraft) &&
296
+ isBoolean(value.convertFromDraft));
297
+ }
298
+ function isMergeInputs(value) {
299
+ return (isNonEmptyString(value.prExternalId) &&
300
+ isGitDeliveryMergeStrategyHint(value.mergeStrategyHint) &&
301
+ isBoolean(value.deleteBranchAfterMerge));
302
+ }
303
+ function isAbortInputs(value) {
304
+ return (isGitDeliveryAbortableOperation(value.operationToAbort) && isBoolean(value.preserveIndexChanges));
305
+ }
306
+ function isRecoveryInputs(value) {
307
+ return (isGitDeliveryRecoveryStrategyHint(value.recoveryStrategyHint) &&
308
+ isNonEmptyString(value.targetRefHash) &&
309
+ isNonNegativeInteger(value.affectedPathCount));
310
+ }
311
+ const RESOLVED_INPUT_GUARDS = {
312
+ "branch-create": isBranchCreateInputs,
313
+ "branch-switch": isBranchSwitchInputs,
314
+ stage: isStageInputs,
315
+ unstage: isUnstageInputs,
316
+ commit: isCommitInputs,
317
+ push: isPushInputs,
318
+ "pr-create": isPrCreateInputs,
319
+ "pr-update": isPrUpdateInputs,
320
+ merge: isMergeInputs,
321
+ abort: isAbortInputs,
322
+ recovery: isRecoveryInputs,
323
+ };
324
+ // ─── Parsers ─────────────────────────────────────────────────────────────────────
325
+ export function parseGitDeliveryResolvedInputs(value) {
326
+ if (!isRecord(value)) {
327
+ return { ok: false, errors: ["resolvedInputs must be an object"] };
328
+ }
329
+ if (!isGitDeliveryActionKind(value.kind)) {
330
+ return { ok: false, errors: ["resolvedInputs.kind must be a known GitDeliveryActionKind"] };
331
+ }
332
+ const guard = RESOLVED_INPUT_GUARDS[value.kind];
333
+ if (!guard(value)) {
334
+ return { ok: false, errors: [`resolvedInputs for kind "${value.kind}" has invalid fields`] };
335
+ }
336
+ return { ok: true, value: value };
337
+ }
338
+ function envelopeFieldErrors(value) {
339
+ const errors = [];
340
+ if (value.schemaVersion !== GIT_DELIVERY_SCHEMA_VERSION) {
341
+ errors.push("envelope.schemaVersion must equal the GIT_DELIVERY_SCHEMA_VERSION literal");
342
+ }
343
+ if (!isNonEmptyString(value.actionId)) {
344
+ errors.push("envelope.actionId must be a non-empty string");
345
+ }
346
+ if (!isGitDeliveryPolicyDecision(value.policyDecision)) {
347
+ errors.push("envelope.policyDecision is not a valid GitDeliveryPolicyDecision");
348
+ }
349
+ if (!isGitDeliveryApprovalRequirement(value.approvalRequirement)) {
350
+ errors.push("envelope.approvalRequirement is not a valid GitDeliveryApprovalRequirement");
351
+ }
352
+ if (!isUndefinedOr(isActionPreview)(value.preview)) {
353
+ errors.push("envelope.preview is not a valid GitDeliveryActionPreview");
354
+ }
355
+ if (!isUndefinedOr(isGitDeliveryExecutionResult)(value.executionResult)) {
356
+ errors.push("envelope.executionResult is not a valid GitDeliveryExecutionResult");
357
+ }
358
+ if (!isUndefinedOr(isGitDeliveryEvidenceRef)(value.evidenceRef)) {
359
+ errors.push("envelope.evidenceRef is not a valid GitDeliveryEvidenceRef");
360
+ }
361
+ return errors;
362
+ }
363
+ export function parseGitDeliveryActionEnvelope(value) {
364
+ if (!isRecord(value)) {
365
+ return { ok: false, errors: ["envelope must be an object"] };
366
+ }
367
+ const inputs = parseGitDeliveryResolvedInputs(value.resolvedInputs);
368
+ if (!inputs.ok) {
369
+ return { ok: false, errors: inputs.errors };
370
+ }
371
+ if (value.kind !== inputs.value.kind) {
372
+ return { ok: false, errors: ["envelope.kind must equal envelope.resolvedInputs.kind"] };
373
+ }
374
+ const fieldErrors = envelopeFieldErrors(value);
375
+ if (fieldErrors.length > 0) {
376
+ return { ok: false, errors: fieldErrors };
377
+ }
378
+ return { ok: true, value: value };
379
+ }
380
+ // ─── Risk-class lookups ──────────────────────────────────────────────────────────
381
+ // Fail-closed risk lookup: unknown kinds → "recovery-or-rewrite" (ordinal 4).
382
+ export function gitDeliveryDefaultRiskClass(kind) {
383
+ if (isGitDeliveryActionKind(kind)) {
384
+ return GIT_DELIVERY_ACTION_RISK_DEFAULTS[kind];
385
+ }
386
+ return "recovery-or-rewrite";
387
+ }
388
+ // Inputs-aware classifier: a force-push escalates beyond the default "publish" class so it is never
389
+ // under-classified relative to its true blast radius.
390
+ export function gitDeliveryRiskClassForInputs(inputs) {
391
+ if (inputs.kind === "push" && inputs.forcePush) {
392
+ return "recovery-or-rewrite";
393
+ }
394
+ return gitDeliveryDefaultRiskClass(inputs.kind);
395
+ }
396
+ // True when the action kind's default risk severity is at or below the ceiling severity.
397
+ export function gitDeliveryRiskClassWithinCeiling(actionKind, ceiling) {
398
+ const actionSeverity = GIT_DELIVERY_RISK_CLASS_SEVERITY[gitDeliveryDefaultRiskClass(actionKind)];
399
+ return actionSeverity <= GIT_DELIVERY_RISK_CLASS_SEVERITY[ceiling];
400
+ }
401
+ // ─── Branch matchers ─────────────────────────────────────────────────────────────
402
+ export function gitDeliveryBranchNameMatchesPattern(branchName, pattern) {
403
+ if (pattern.matchKind === "exact") {
404
+ return branchName === pattern.value;
405
+ }
406
+ return branchName.startsWith(pattern.value);
407
+ }
408
+ export function gitDeliveryBranchNameMatchesAny(branchName, patterns) {
409
+ return patterns.some((pattern) => gitDeliveryBranchNameMatchesPattern(branchName, pattern));
410
+ }
@@ -0,0 +1,27 @@
1
+ import type { GitRepositoryState, GitUnavailableReason, GitRepositoryValidation } from "./git-repository.js";
2
+ export declare const GIT_HISTORY_SCHEMA_VERSION: "1";
3
+ export interface GitHistoryEntry {
4
+ readonly sha: string;
5
+ readonly shortSha: string;
6
+ readonly subject: string;
7
+ readonly author: string;
8
+ readonly date: string;
9
+ readonly refs: readonly string[];
10
+ readonly parentCount: number;
11
+ readonly changedFileCount: number;
12
+ }
13
+ export interface GitHistoryResponse {
14
+ readonly schemaVersion: typeof GIT_HISTORY_SCHEMA_VERSION;
15
+ readonly root: string;
16
+ readonly repositoryRoot?: string | undefined;
17
+ readonly state: GitRepositoryState;
18
+ readonly available: boolean;
19
+ readonly reason?: GitUnavailableReason | "unsafe-repository" | "git-error" | undefined;
20
+ readonly message?: string | undefined;
21
+ readonly entries: readonly GitHistoryEntry[];
22
+ readonly limit: number;
23
+ readonly skip: number;
24
+ readonly truncated: boolean;
25
+ }
26
+ export declare function validateGitHistoryResponse(input: unknown): GitRepositoryValidation;
27
+ //# sourceMappingURL=git-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-history.d.ts","sourceRoot":"","sources":["../src/git-history.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,0BAA0B,EAAG,GAAY,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,OAAO,0BAA0B,CAAC;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,mBAAmB,GAAG,WAAW,GAAG,SAAS,CAAC;IACvF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AA+CD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAmBlF"}