gh-inari 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/.codex-plugin/plugin.json +1 -1
  2. package/dist/admission/authorization.d.ts +48 -3
  3. package/dist/admission/authorization.js +256 -75
  4. package/dist/admission/authorization.js.map +1 -1
  5. package/dist/admission/server.d.ts +6 -1
  6. package/dist/admission/server.js +143 -16
  7. package/dist/admission/server.js.map +1 -1
  8. package/dist/agent-authority/capability-admission.js +17 -1
  9. package/dist/agent-authority/capability-admission.js.map +1 -1
  10. package/dist/agent-authority/session-certificate.js +35 -3
  11. package/dist/agent-authority/session-certificate.js.map +1 -1
  12. package/dist/authorized-execution.js +15 -4
  13. package/dist/authorized-execution.js.map +1 -1
  14. package/dist/cli/runtime/admission-client.d.ts +14 -1
  15. package/dist/cli/runtime/admission-client.js +127 -23
  16. package/dist/cli/runtime/admission-client.js.map +1 -1
  17. package/dist/cli/runtime/branch-observation.d.ts +20 -0
  18. package/dist/cli/runtime/branch-observation.js +132 -0
  19. package/dist/cli/runtime/branch-observation.js.map +1 -1
  20. package/dist/cli/runtime/session-launcher.d.ts +9 -3
  21. package/dist/cli/runtime/session-launcher.js +122 -28
  22. package/dist/cli/runtime/session-launcher.js.map +1 -1
  23. package/dist/cli-core.js +325 -86
  24. package/dist/cli-core.js.map +1 -1
  25. package/dist/command-contract.js +12 -3
  26. package/dist/command-contract.js.map +1 -1
  27. package/dist/composition/setup-adapters.js +22 -3
  28. package/dist/composition/setup-adapters.js.map +1 -1
  29. package/dist/composition/setup-host.d.ts +29 -2
  30. package/dist/composition/setup-host.js +77 -17
  31. package/dist/composition/setup-host.js.map +1 -1
  32. package/dist/composition/setup-observation.d.ts +27 -10
  33. package/dist/composition/setup-observation.js +111 -38
  34. package/dist/composition/setup-observation.js.map +1 -1
  35. package/dist/executor/credential-store.d.ts +19 -0
  36. package/dist/executor/credential-store.js +56 -5
  37. package/dist/executor/credential-store.js.map +1 -1
  38. package/dist/executor/enrollment/issuer-reference.d.ts +8 -1
  39. package/dist/executor/enrollment/issuer-reference.js +46 -19
  40. package/dist/executor/enrollment/issuer-reference.js.map +1 -1
  41. package/dist/executor/enrollment/owner.d.ts +5 -2
  42. package/dist/executor/enrollment/owner.js +33 -7
  43. package/dist/executor/enrollment/owner.js.map +1 -1
  44. package/dist/executor/execution.d.ts +43 -0
  45. package/dist/executor/execution.js +234 -31
  46. package/dist/executor/execution.js.map +1 -1
  47. package/dist/executor/issuer-input.d.ts +11 -0
  48. package/dist/executor/issuer-input.js +25 -0
  49. package/dist/executor/issuer-input.js.map +1 -1
  50. package/dist/executor/server.js +3 -1
  51. package/dist/executor/server.js.map +1 -1
  52. package/dist/executor/setup.d.ts +6 -0
  53. package/dist/executor/setup.js +13 -3
  54. package/dist/executor/setup.js.map +1 -1
  55. package/dist/github/pr-publication-provider.js +9 -1
  56. package/dist/github/pr-publication-provider.js.map +1 -1
  57. package/dist/implementation-session-binding.d.ts +9 -0
  58. package/dist/implementation-session-binding.js +36 -2
  59. package/dist/implementation-session-binding.js.map +1 -1
  60. package/dist/local-control/executor-client.d.ts +7 -2
  61. package/dist/local-control/executor-client.js +41 -2
  62. package/dist/local-control/executor-client.js.map +1 -1
  63. package/dist/local-control/executor-http.d.ts +20 -0
  64. package/dist/local-control/executor-http.js +214 -9
  65. package/dist/local-control/executor-http.js.map +1 -1
  66. package/dist/local-control/runtime-log.d.ts +29 -0
  67. package/dist/local-control/runtime-log.js +198 -0
  68. package/dist/local-control/runtime-log.js.map +1 -0
  69. package/dist/local-control/session-binding.d.ts +7 -0
  70. package/dist/local-control/session-binding.js +10 -0
  71. package/dist/local-control/session-binding.js.map +1 -1
  72. package/dist/local-control/supervisor.js +44 -2
  73. package/dist/local-control/supervisor.js.map +1 -1
  74. package/dist/runtime-contracts/index.d.ts +1 -0
  75. package/dist/runtime-contracts/index.js +1 -0
  76. package/dist/runtime-contracts/index.js.map +1 -1
  77. package/dist/runtime-contracts/ports.d.ts +21 -0
  78. package/dist/runtime-contracts/runtime-failure.d.ts +95 -0
  79. package/dist/runtime-contracts/runtime-failure.js +167 -0
  80. package/dist/runtime-contracts/runtime-failure.js.map +1 -0
  81. package/package.json +3 -3
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "inari",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "description": "Governed GitHub Issue/PR/template workflows via the inari CLI. Prefer inari over raw gh for operations it owns; use inari skill for operational playbooks.",
5
5
  "skills": "skills/inari"
6
6
  }
@@ -2,8 +2,18 @@ import type { LocalSessionBinding } from "../local-control/session-binding.js";
2
2
  import type { LocalExecutorEvidenceRequest } from "../local-control/executor-http.js";
3
3
  import { type ExecutionIntent } from "../local-control/execution-intent.js";
4
4
  import { type Delegator } from "../agent-authority/delegator.js";
5
+ import type { SessionCertificateRepository } from "../agent-authority/session-certificate.js";
5
6
  import { type AuthorizedExecution } from "../authorized-execution.js";
6
- import { type ObserveLocalBranchInput } from "../cli/runtime/branch-observation.js";
7
+ import { type ChangeProjectionResult } from "../change.js";
8
+ import { type LocalBranchPolicyInput } from "../cli/runtime/branch-observation.js";
9
+ import type { LocalExecutorBranchPolicyRequest } from "../local-control/executor-http.js";
10
+ import { type RuntimeFailure, type RuntimeFailureReason, type RuntimeFailureStage } from "../runtime-contracts/runtime-failure.js";
11
+ /** Bounded Admission denial carrying the owner stage and catalog reason (#1180). */
12
+ export declare class AdmissionAuthorizationError extends Error {
13
+ readonly code: RuntimeFailureReason;
14
+ readonly runtimeFailure: RuntimeFailure;
15
+ constructor(stage: RuntimeFailureStage, code: RuntimeFailureReason, message: string);
16
+ }
7
17
  /** Reads current Executor evidence through the neutral Executor client protocol. */
8
18
  export type AdmissionEvidenceReader = (request: LocalExecutorEvidenceRequest) => Promise<unknown>;
9
19
  export interface AdmissionAuthorizationOptions {
@@ -11,14 +21,49 @@ export interface AdmissionAuthorizationOptions {
11
21
  readonly readEvidence: AdmissionEvidenceReader;
12
22
  readonly environment?: NodeJS.ProcessEnv;
13
23
  readonly now?: () => Date;
14
- /** Public owner-port observation supplied by the caller, without provider credentials. */
15
- readonly branchObservation?: ObserveLocalBranchInput;
24
+ /**
25
+ * Reads the current repository branch-policy input from the Executor owner
26
+ * (#1179). Admission verifies every observed Session binding against this
27
+ * current evidence; it never accepts a caller-supplied observation.
28
+ */
29
+ readonly readBranchPolicy?: (request: LocalExecutorBranchPolicyRequest) => Promise<unknown>;
16
30
  }
31
+ /**
32
+ * Current, owner-acquired branch-policy input for one governed Implementation.
33
+ *
34
+ * #1213: when the owner projects the Implementation's canonical Source set,
35
+ * Admission attaches the certificate-safe projection of the current authorized
36
+ * Implementation carrying that set. The Session launcher signs it as the upper
37
+ * bound of Source-rooted change.* capabilities; the Session task stays the
38
+ * Implementation. The projected set must equal the owner's parsed set.
39
+ */
40
+ export declare function currentBranchPolicyInput(repository: SessionCertificateRepository, implementation: number, options: AdmissionAuthorizationOptions, stage: RuntimeFailureStage): Promise<LocalBranchPolicyInput>;
17
41
  export interface AdmittedSession {
18
42
  readonly id: string;
19
43
  readonly status: string;
20
44
  readonly exp: number;
21
45
  }
46
+ /**
47
+ * Repository-bound Session readiness (#1182): the same current Executor
48
+ * repository binding and protected-ref trust evidence Session registration
49
+ * requires, for the Authority the caller expects Admission to have pinned. It
50
+ * admits nothing and stores nothing; every failure throws a bounded denial.
51
+ */
52
+ export declare function observeRepositoryReadiness(repository: SessionCertificateRepository, expectedAuthority: {
53
+ readonly id: string;
54
+ readonly publicKeyFingerprint: string;
55
+ }, options: AdmissionAuthorizationOptions): Promise<void>;
56
+ /**
57
+ * A read on behalf of an active Session (#1181): the Session exists, is active
58
+ * and is bound to exactly the requested repository. It authorizes no effect.
59
+ */
60
+ export declare function requireActiveSessionRepository(sessionId: string, repository: SessionCertificateRepository, options: AdmissionAuthorizationOptions): LocalSessionBinding;
61
+ /**
62
+ * The current Change projection of the Session's Implementation (#1181), from
63
+ * the same Executor evidence and Authority/repository checks every execution
64
+ * uses. Read-only; it authorizes nothing.
65
+ */
66
+ export declare function currentSessionChange(binding: LocalSessionBinding, options: AdmissionAuthorizationOptions): Promise<ChangeProjectionResult>;
22
67
  /** Admits a validated Session binding against current Executor trust evidence. */
23
68
  export declare function admitSession(binding: LocalSessionBinding, options: AdmissionAuthorizationOptions): Promise<AdmittedSession>;
24
69
  /** Closes a validated Session binding against current Executor trust evidence. */
@@ -20,25 +20,80 @@ import { createAuthorizedExecution } from "../authorized-execution.js";
20
20
  import { changeReadRequest } from "../change-execution-port.js";
21
21
  import { validateChangeProjectionResult } from "../change.js";
22
22
  import { tryAuthorizeImplementation } from "../implementation-authorization.js";
23
- import { projectImplementationSessionAuthorizationBinding } from "../implementation-session-binding.js";
23
+ import { projectImplementationSessionAuthorizationBinding, } from "../implementation-session-binding.js";
24
24
  import { tryProjectImplementationScope } from "../implementation-scope-projection.js";
25
25
  import { assertTrustedExecution, validateIssuerRepositoryIdentity, } from "../github/effect-authorizer.js";
26
- import { observeLocalBranch } from "../cli/runtime/branch-observation.js";
27
- function requireCurrentBranchObservation(binding, options) {
26
+ import { observeLocalBranch, validateLocalBranchPolicyInput, } from "../cli/runtime/branch-observation.js";
27
+ import { runtimeFailure, } from "../runtime-contracts/runtime-failure.js";
28
+ /** Bounded Admission denial carrying the owner stage and catalog reason (#1180). */
29
+ export class AdmissionAuthorizationError extends Error {
30
+ code;
31
+ runtimeFailure;
32
+ constructor(stage, code, message) {
33
+ super(message);
34
+ this.name = "AdmissionAuthorizationError";
35
+ this.code = code;
36
+ this.runtimeFailure = runtimeFailure(stage, code);
37
+ }
38
+ }
39
+ function deny(stage, code, message) {
40
+ throw new AdmissionAuthorizationError(stage, code, message);
41
+ }
42
+ /** Current owner-read branch-policy input; the owner never supplies an Implementation binding. */
43
+ async function readCurrentBranchPolicyInput(repository, implementation, options, stage) {
44
+ if (options.readBranchPolicy === undefined)
45
+ deny(stage, "ADMISSION_BRANCH_OBSERVATION_MISSING", "Current repository branch observation is missing.");
46
+ const input = validateLocalBranchPolicyInput(await options.readBranchPolicy({ version: 1, repository: evidenceRepository(repository), implementation }));
47
+ if (input === undefined || input.implementationBinding !== undefined)
48
+ deny(stage, "ADMISSION_BRANCH_OBSERVATION_STALE", "Current repository branch observation is invalid or stale.");
49
+ return input;
50
+ }
51
+ /**
52
+ * Current, owner-acquired branch-policy input for one governed Implementation.
53
+ *
54
+ * #1213: when the owner projects the Implementation's canonical Source set,
55
+ * Admission attaches the certificate-safe projection of the current authorized
56
+ * Implementation carrying that set. The Session launcher signs it as the upper
57
+ * bound of Source-rooted change.* capabilities; the Session task stays the
58
+ * Implementation. The projected set must equal the owner's parsed set.
59
+ */
60
+ export async function currentBranchPolicyInput(repository, implementation, options, stage) {
61
+ const input = await readCurrentBranchPolicyInput(repository, implementation, options, stage);
62
+ if (input.sources === undefined)
63
+ return input;
64
+ const pinned = options.runtimeAuthority;
65
+ const subject = {
66
+ repository,
67
+ authority: { id: pinned.id, publicKeyFingerprint: delegatorPublicKeyFingerprint(pinned.key) },
68
+ };
69
+ const evidence = validateEvidence(await options.readEvidence({
70
+ version: 1,
71
+ repository: evidenceRepository(repository),
72
+ authorityId: pinned.id,
73
+ issue: implementation,
74
+ implementationIssue: implementation,
75
+ }), subject, pinned, stage);
76
+ const current = currentImplementationAuthorization(evidence, { kind: "issue", number: implementation }, true, stage);
77
+ if (current.binding.sources === undefined ||
78
+ canonicalJsonString(current.binding.sources) !==
79
+ canonicalJsonString(input.sources))
80
+ deny(stage, "ADMISSION_BRANCH_OBSERVATION_STALE", "Current Implementation Source evidence is inconsistent.");
81
+ return Object.freeze({ ...input, implementationBinding: current.binding });
82
+ }
83
+ async function requireCurrentBranchObservation(binding, options, stage) {
28
84
  if (binding.branchObservation === undefined)
29
85
  return;
30
- if (options.branchObservation === undefined)
31
- throw new Error("Current repository branch observation is missing.");
86
+ const input = await readCurrentBranchPolicyInput(binding.repository, binding.task.number, options, stage);
32
87
  let current;
33
88
  try {
34
- current = observeLocalBranch(options.branchObservation);
89
+ current = observeLocalBranch({ ...input, observedBranch: binding.branchObservation.observedBranch });
35
90
  }
36
91
  catch {
37
- throw new Error("Current repository branch observation is invalid or stale.");
92
+ deny(stage, "ADMISSION_BRANCH_OBSERVATION_STALE", "Current repository branch observation is invalid or stale.");
38
93
  }
39
94
  if (canonicalJsonString(current) !==
40
95
  canonicalJsonString(binding.branchObservation))
41
- throw new Error("Current repository branch observation contradicts Session binding.");
96
+ deny(stage, "ADMISSION_BRANCH_OBSERVATION_CONTRADICTED", "Current repository branch observation contradicts Session binding.");
42
97
  }
43
98
  function isRecord(value) {
44
99
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -46,12 +101,29 @@ function isRecord(value) {
46
101
  function exactKeys(value, allowed) {
47
102
  return Object.keys(value).every((key) => allowed.includes(key));
48
103
  }
49
- function pinnedRuntimeAuthority(value) {
104
+ function pinnedRuntimeAuthority(value, stage) {
50
105
  const result = validateDelegator(value);
51
106
  if (!result.valid || result.value === undefined)
52
- throw new Error("Public Runtime Authority trust is invalid.");
107
+ deny(stage, "ADMISSION_EVIDENCE_MALFORMED", "Public Runtime Authority trust is invalid.");
53
108
  return result.value;
54
109
  }
110
+ function requirePinnedAuthorityMatch(current, binding, pinnedAuthority, stage) {
111
+ if (current.id !== binding.authority.id ||
112
+ delegatorPublicKeyFingerprint(current.key) !== binding.authority.publicKeyFingerprint ||
113
+ canonicalJsonString(current) !==
114
+ canonicalJsonString(pinnedAuthority))
115
+ deny(stage, "ADMISSION_RUNTIME_AUTHORITY_MISMATCH", "Current Runtime Authority trust does not match Admission configuration.");
116
+ }
117
+ function requireAuthorityRef(authority, stage) {
118
+ if (!isRecord(authority) ||
119
+ !exactKeys(authority, ["ref", "sha"]) ||
120
+ typeof authority.ref !== "string" ||
121
+ !/^refs\/heads\/[A-Za-z0-9._/-]+$/u.test(authority.ref) ||
122
+ typeof authority.sha !== "string" ||
123
+ !/^[a-f0-9]{40}$/u.test(authority.sha))
124
+ deny(stage, "ADMISSION_EVIDENCE_MALFORMED", "Executor Authority evidence is malformed.");
125
+ return { ref: authority.ref, sha: authority.sha };
126
+ }
55
127
  function sameRepository(left, right) {
56
128
  if (!isRecord(left))
57
129
  return false;
@@ -114,32 +186,21 @@ function readTreeDelta(intent) {
114
186
  changes: request.changes.map((change) => ({ operation: "modify", path: change.path })),
115
187
  };
116
188
  }
117
- function validateEvidence(value, binding, pinnedAuthority) {
189
+ function validateEvidence(value, binding, pinnedAuthority, stage = "implementation-admission") {
118
190
  if (!isRecord(value) ||
119
191
  !exactKeys(value, ["repository", "authority", "runtimeAuthority", "change", "implementation", "reviewEvidence"]))
120
- throw new Error("Executor evidence response is malformed.");
192
+ deny(stage, "ADMISSION_EVIDENCE_MALFORMED", "Executor evidence response is malformed.");
121
193
  const repositoryResult = validateIssuerRepositoryIdentity(value.repository);
122
194
  if (!repositoryResult.valid ||
123
195
  repositoryResult.value === undefined ||
124
196
  !sameRepository(repositoryResult.value, binding.repository))
125
- throw new Error("Executor repository evidence does not match Session.");
126
- const authority = value.authority;
127
- if (!isRecord(authority) ||
128
- !exactKeys(authority, ["ref", "sha"]) ||
129
- typeof authority.ref !== "string" ||
130
- !/^refs\/heads\/[A-Za-z0-9._/-]+$/u.test(authority.ref) ||
131
- typeof authority.sha !== "string" ||
132
- !/^[a-f0-9]{40}$/u.test(authority.sha))
133
- throw new Error("Executor Authority evidence is malformed.");
134
- const runtime = pinnedRuntimeAuthority(value.runtimeAuthority);
135
- if (runtime.id !== binding.authority.id ||
136
- delegatorPublicKeyFingerprint(runtime.key) !== binding.authority.publicKeyFingerprint ||
137
- canonicalJsonString(runtime) !==
138
- canonicalJsonString(pinnedAuthority))
139
- throw new Error("Current Runtime Authority trust does not match Admission configuration.");
197
+ deny(stage, "ADMISSION_REPOSITORY_MISMATCH", "Executor repository evidence does not match Session.");
198
+ const authority = requireAuthorityRef(value.authority, stage);
199
+ const runtime = pinnedRuntimeAuthority(value.runtimeAuthority, stage);
200
+ requirePinnedAuthorityMatch(runtime, binding, pinnedAuthority, stage);
140
201
  const projection = validateChangeProjectionResult(value.change);
141
202
  if (!projection.valid || projection.projection === undefined)
142
- throw new Error("Current Change evidence is malformed.");
203
+ deny(stage, "ADMISSION_EVIDENCE_MALFORMED", "Current Change evidence is malformed.");
143
204
  if (!isRecord(value.implementation) ||
144
205
  !exactKeys(value.implementation, [
145
206
  "implementation",
@@ -150,37 +211,27 @@ function validateEvidence(value, binding, pinnedAuthority) {
150
211
  "change",
151
212
  "pullRequest",
152
213
  ]))
153
- throw new Error("Current Implementation evidence is malformed.");
214
+ deny(stage, "ADMISSION_EVIDENCE_MALFORMED", "Current Implementation evidence is malformed.");
154
215
  return {
155
216
  repository: repositoryResult.value,
156
- authority: { ref: authority.ref, sha: authority.sha },
217
+ authority,
157
218
  change: projection.projection,
158
219
  implementation: value.implementation,
159
220
  ...(value.reviewEvidence === undefined ? {} : { reviewEvidence: value.reviewEvidence }),
160
221
  };
161
222
  }
162
- function validateTrustEvidence(value, binding, pinnedAuthority) {
223
+ function validateTrustEvidence(value, subject, pinnedAuthority) {
224
+ const stage = "trust-evidence";
163
225
  if (!isRecord(value) || !exactKeys(value, ["repository", "authority", "runtimeAuthority"]))
164
- throw new Error("Executor Runtime Authority evidence is malformed.");
165
- if (!sameRepository(value.repository, binding.repository))
166
- throw new Error("Executor repository evidence does not match Session.");
167
- const authority = value.authority;
168
- if (!isRecord(authority) ||
169
- !exactKeys(authority, ["ref", "sha"]) ||
170
- typeof authority.ref !== "string" ||
171
- !/^refs\/heads\/[A-Za-z0-9._/-]+$/u.test(authority.ref) ||
172
- typeof authority.sha !== "string" ||
173
- !/^[a-f0-9]{40}$/u.test(authority.sha))
174
- throw new Error("Executor Authority evidence is malformed.");
175
- const current = pinnedRuntimeAuthority(value.runtimeAuthority);
176
- if (current.id !== binding.authority.id ||
177
- delegatorPublicKeyFingerprint(current.key) !== binding.authority.publicKeyFingerprint ||
178
- canonicalJsonString(current) !==
179
- canonicalJsonString(pinnedAuthority))
180
- throw new Error("Current Runtime Authority trust does not match Admission configuration.");
226
+ deny(stage, "ADMISSION_EVIDENCE_MALFORMED", "Executor Runtime Authority evidence is malformed.");
227
+ if (!sameRepository(value.repository, subject.repository))
228
+ deny(stage, "ADMISSION_REPOSITORY_MISMATCH", "Executor repository evidence does not match Session.");
229
+ requireAuthorityRef(value.authority, stage);
230
+ const current = pinnedRuntimeAuthority(value.runtimeAuthority, stage);
231
+ requirePinnedAuthorityMatch(current, subject, pinnedAuthority, stage);
181
232
  return current;
182
233
  }
183
- function currentImplementationAuthorization(evidence, binding) {
234
+ function currentImplementationAuthorization(evidence, task, includeSources, stage = "implementation-admission") {
184
235
  const implementationEvidence = evidence.implementation;
185
236
  const authorizationInput = {
186
237
  implementation: implementationEvidence.implementation,
@@ -190,17 +241,59 @@ function currentImplementationAuthorization(evidence, binding) {
190
241
  readiness: implementationEvidence.readiness,
191
242
  };
192
243
  const authorization = tryAuthorizeImplementation(authorizationInput);
193
- if (!authorization.valid || authorization.status !== "authorized" || authorization.authorization === undefined)
194
- throw new Error("Current Implementation is not authorized.");
244
+ if (!authorization.valid ||
245
+ authorization.status !== "authorized" ||
246
+ authorization.authorization === undefined ||
247
+ authorization.contract === undefined)
248
+ deny(stage, "ADMISSION_IMPLEMENTATION_UNAUTHORIZED", "Current Implementation is not authorized.");
195
249
  const currentInput = { ...authorizationInput, authorization: authorization.authorization };
196
- const bindingProjection = projectImplementationSessionAuthorizationBinding({
197
- ...currentInput,
198
- task: binding.task,
199
- });
250
+ let bindingProjection;
251
+ try {
252
+ bindingProjection = projectImplementationSessionAuthorizationBinding({
253
+ ...currentInput,
254
+ task,
255
+ ...(includeSources ? { includeSources: true } : {}),
256
+ });
257
+ }
258
+ catch {
259
+ deny(stage, "ADMISSION_IMPLEMENTATION_UNAUTHORIZED", "Current Implementation is not authorized.");
260
+ }
200
261
  const scope = tryProjectImplementationScope(currentInput);
201
262
  if (!scope.valid || scope.projection === undefined)
202
- throw new Error("Current Implementation scope is unavailable.");
203
- return { binding: bindingProjection, scope: scope.projection };
263
+ deny(stage, "ADMISSION_IMPLEMENTATION_SCOPE_UNAVAILABLE", "Current Implementation scope is unavailable.");
264
+ return { binding: bindingProjection, scope: scope.projection, sources: authorization.contract.sources };
265
+ }
266
+ const CHANGE_OPERATIONS = new Set([
267
+ "change.show",
268
+ "change.issue",
269
+ "change.ready",
270
+ "change.abort",
271
+ "change.merge",
272
+ ]);
273
+ function sameRepositorySource(source, repository, issue) {
274
+ return (source.repositoryHost.toLowerCase() === "github.com" &&
275
+ source.repositoryId === repository.id &&
276
+ source.number === issue);
277
+ }
278
+ /**
279
+ * #1213: a Change operation's root must be an exact same-repository member of
280
+ * the signed Session Source set. There is no primary Source. The task-bound
281
+ * compatibility claim of a Source-bound Session is never a Change root. A
282
+ * legacy Session without a signed Source set keeps its task-rooted identity.
283
+ */
284
+ function requireSignedChangeRoot(binding, issue) {
285
+ const signed = binding.implementationBinding?.sources;
286
+ if (signed === undefined) {
287
+ if (binding.task.number !== issue)
288
+ deny("implementation-admission", "ADMISSION_TASK_MISMATCH", "Execution task does not match Session.");
289
+ }
290
+ else if (!signed.some((source) => sameRepositorySource(source, binding.repository, issue)))
291
+ deny("implementation-admission", "ADMISSION_TASK_MISMATCH", "Change root is not a Session Source.");
292
+ }
293
+ /** The Change root must also still be a same-repository Source of the current Implementation contract. */
294
+ function requireCurrentChangeRoot(binding, issue, currentSources) {
295
+ if (!currentSources.some((source) => sameRepositorySource(source, binding.repository, issue)))
296
+ deny("implementation-admission", "ADMISSION_TASK_MISMATCH", "Change root is not a current Implementation Source.");
204
297
  }
205
298
  async function currentTrust(binding, options) {
206
299
  const evidence = await options.readEvidence({
@@ -210,9 +303,65 @@ async function currentTrust(binding, options) {
210
303
  });
211
304
  return validateTrustEvidence(evidence, binding, options.runtimeAuthority);
212
305
  }
306
+ /**
307
+ * Repository-bound Session readiness (#1182): the same current Executor
308
+ * repository binding and protected-ref trust evidence Session registration
309
+ * requires, for the Authority the caller expects Admission to have pinned. It
310
+ * admits nothing and stores nothing; every failure throws a bounded denial.
311
+ */
312
+ export async function observeRepositoryReadiness(repository, expectedAuthority, options) {
313
+ const pinned = options.runtimeAuthority;
314
+ if (pinned.id !== expectedAuthority.id ||
315
+ delegatorPublicKeyFingerprint(pinned.key) !== expectedAuthority.publicKeyFingerprint)
316
+ deny("trust-evidence", "ADMISSION_RUNTIME_AUTHORITY_MISMATCH", "The Authority Admission pins differs from the configured setup Authority.");
317
+ const subject = {
318
+ repository,
319
+ authority: { id: pinned.id, publicKeyFingerprint: expectedAuthority.publicKeyFingerprint },
320
+ };
321
+ const evidence = await options.readEvidence({
322
+ version: 1,
323
+ repository: evidenceRepository(repository),
324
+ authorityId: pinned.id,
325
+ });
326
+ validateTrustEvidence(evidence, subject, pinned);
327
+ }
328
+ /**
329
+ * A read on behalf of an active Session (#1181): the Session exists, is active
330
+ * and is bound to exactly the requested repository. It authorizes no effect.
331
+ */
332
+ export function requireActiveSessionRepository(sessionId, repository, options) {
333
+ const stored = readAdmissionSession(sessionId, options.runtimeAuthority, {
334
+ environment: options.environment,
335
+ now: options.now?.(),
336
+ });
337
+ if (stored === undefined || stored.status !== "active")
338
+ deny("implementation-admission", "ADMISSION_SESSION_UNAVAILABLE", "Session is unavailable.");
339
+ const binding = stored.record.binding;
340
+ if (binding.repository.id !== repository.id ||
341
+ binding.repository.name.toLocaleLowerCase("en-US") !== repository.name.toLocaleLowerCase("en-US"))
342
+ deny("implementation-admission", "ADMISSION_TASK_MISMATCH", "The read repository does not match the Session.");
343
+ return binding;
344
+ }
345
+ /**
346
+ * The current Change projection of the Session's Implementation (#1181), from
347
+ * the same Executor evidence and Authority/repository checks every execution
348
+ * uses. Read-only; it authorizes nothing.
349
+ */
350
+ export async function currentSessionChange(binding, options) {
351
+ if (binding.task.kind !== "issue")
352
+ deny("implementation-admission", "ADMISSION_TASK_MISMATCH", "The Session has no Implementation task.");
353
+ const evidence = validateEvidence(await options.readEvidence({
354
+ version: 1,
355
+ repository: evidenceRepository(binding.repository),
356
+ authorityId: binding.authority.id,
357
+ issue: binding.task.number,
358
+ implementationIssue: binding.task.number,
359
+ }), binding, options.runtimeAuthority);
360
+ return evidence.change;
361
+ }
213
362
  /** Admits a validated Session binding against current Executor trust evidence. */
214
363
  export async function admitSession(binding, options) {
215
- requireCurrentBranchObservation(binding, options);
364
+ await requireCurrentBranchObservation(binding, options, "session-registration");
216
365
  const current = await currentTrust(binding, options);
217
366
  const snapshot = createAdmissionSession(binding, current, {
218
367
  environment: options.environment,
@@ -240,18 +389,23 @@ export async function authorizeExecutionIntent(intent, sessionId, options) {
240
389
  now: options.now?.(),
241
390
  });
242
391
  if (stored === undefined || stored.status !== "active")
243
- throw new Error("Session is unavailable.");
392
+ deny("implementation-admission", "ADMISSION_SESSION_UNAVAILABLE", "Session is unavailable.");
244
393
  const binding = stored.record.binding;
245
- requireCurrentBranchObservation(binding, options);
394
+ await requireCurrentBranchObservation(binding, options, "implementation-admission");
246
395
  if (binding.branchObservation !== undefined &&
247
396
  intent.operation === "branch.advance" &&
248
397
  intent.request.branch !== binding.branchObservation.expectedBranch)
249
- throw new Error("Branch advance does not match the Session policy branch.");
398
+ deny("implementation-admission", "ADMISSION_BRANCH_SCOPE_DENIED", "Branch advance does not match the Session policy branch.");
250
399
  if (!intentRepositoryMatchesBinding(intent.repository, binding.repository))
251
- throw new Error("Execution repository does not match Session.");
400
+ deny("implementation-admission", "ADMISSION_TASK_MISMATCH", "Execution repository does not match Session.");
252
401
  const issue = executionIntentIssue(intent);
253
- if (issue === undefined || binding.task.kind !== "issue" || binding.task.number !== issue)
254
- throw new Error("Execution task does not match Session.");
402
+ const changeOperation = CHANGE_OPERATIONS.has(intent.operation);
403
+ // The Implementation task is the Session identity; a Change operation's root
404
+ // is validated below against current and signed Source evidence instead.
405
+ if (issue === undefined || binding.task.kind !== "issue" || (!changeOperation && binding.task.number !== issue))
406
+ deny("implementation-admission", "ADMISSION_TASK_MISMATCH", "Execution task does not match Session.");
407
+ if (changeOperation)
408
+ requireSignedChangeRoot(binding, issue);
255
409
  const evidenceValue = await options.readEvidence({
256
410
  version: 1,
257
411
  repository: evidenceRepository(binding.repository),
@@ -260,7 +414,17 @@ export async function authorizeExecutionIntent(intent, sessionId, options) {
260
414
  implementationIssue: binding.task.number,
261
415
  });
262
416
  const evidence = validateEvidence(evidenceValue, binding, options.runtimeAuthority);
263
- const current = currentImplementationAuthorization(evidence, binding);
417
+ const sourceBound = binding.implementationBinding?.sources !== undefined;
418
+ const current = currentImplementationAuthorization(evidence, binding.task, sourceBound);
419
+ if (sourceBound &&
420
+ (binding.implementationBinding === undefined ||
421
+ binding.implementationBinding.task.number !== binding.task.number ||
422
+ binding.implementationBinding.authorization.implementation.number !==
423
+ current.binding.authorization.implementation.number ||
424
+ binding.implementationBinding.repository.repositoryId !== current.binding.repository.repositoryId))
425
+ deny("implementation-admission", "ADMISSION_TASK_MISMATCH", "Signed Implementation binding does not match.");
426
+ if (changeOperation)
427
+ requireCurrentChangeRoot(binding, issue, current.sources);
264
428
  const operation = capabilityOperation(intent);
265
429
  const nowSeconds = Math.floor((options.now?.() ?? new Date()).getTime() / 1000);
266
430
  const context = {
@@ -268,19 +432,33 @@ export async function authorizeExecutionIntent(intent, sessionId, options) {
268
432
  implementationBinding: current.binding,
269
433
  implementationScope: current.scope,
270
434
  };
271
- const admission = admitAuthenticatedSessionCapability({
272
- context,
273
- operation,
274
- subject: intentSubject(intent),
275
- projection: evidence.change,
276
- ...(readTreeDelta(intent) === undefined ? {} : { treeDelta: readTreeDelta(intent) }),
277
- ...(evidence.reviewEvidence === undefined ? {} : { reviewEvidence: evidence.reviewEvidence }),
278
- });
435
+ let admission;
436
+ try {
437
+ admission = admitAuthenticatedSessionCapability({
438
+ context,
439
+ operation,
440
+ subject: intentSubject(intent),
441
+ projection: evidence.change,
442
+ ...(readTreeDelta(intent) === undefined ? {} : { treeDelta: readTreeDelta(intent) }),
443
+ ...(evidence.reviewEvidence === undefined ? {} : { reviewEvidence: evidence.reviewEvidence }),
444
+ });
445
+ }
446
+ catch (error) {
447
+ // Keep the capability owner's own denial (name/reason) and attach the bounded wire diagnostic.
448
+ if (error instanceof Error) {
449
+ Object.defineProperty(error, "runtimeFailure", {
450
+ value: runtimeFailure("implementation-admission", "ADMISSION_CAPABILITY_DENIED"),
451
+ enumerable: false,
452
+ });
453
+ throw error;
454
+ }
455
+ deny("implementation-admission", "ADMISSION_CAPABILITY_DENIED", "The Session capability does not authorize this operation.");
456
+ }
279
457
  let branchAuthorization;
280
458
  if (intent.operation === "branch.advance") {
281
459
  const authorized = authorizeBranchAdvance({ context, admission, request: intent.request });
282
460
  if (!authorized.valid)
283
- throw new Error("Branch advance is outside the current authorized scope.");
461
+ deny("implementation-admission", "ADMISSION_BRANCH_SCOPE_DENIED", "Branch advance is outside the current authorized scope.");
284
462
  branchAuthorization = authorized.authorization;
285
463
  }
286
464
  const provenanceRequest = {
@@ -312,7 +490,10 @@ export async function authorizeExecutionIntent(intent, sessionId, options) {
312
490
  version: 1,
313
491
  operation: intent.operation,
314
492
  repository: evidence.repository,
315
- task: binding.task,
493
+ // The closed AuthorizedExecution task names the execution's own root Issue.
494
+ // A Source-rooted Change (#1213) is identified by its Source subject; the
495
+ // Implementation task is not restated as that root.
496
+ ...(binding.task.number === issue ? { task: binding.task } : {}),
316
497
  subject: admission.subject,
317
498
  capability: admission.capability,
318
499
  provenance,
@@ -1 +1 @@
1
- {"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../src/admission/authorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../src/admission/authorization.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ import type { Delegator } from "../agent-authority/delegator.js";
11
11
  import type { AuthorizedExecution } from "../authorized-execution.js";
12
12
  import { type RepositoryIdentity } from "../github/effect-authorizer.js";
13
13
  import type { LocalAdmissionConfig } from "../local-control/config.js";
14
- import type { LocalExecutorEvidenceRequest } from "../local-control/executor-http.js";
14
+ import { type LocalExecutorBranchPolicyRequest, type LocalExecutorEvidenceRequest, type LocalExecutorGovernedContractRequest } from "../local-control/executor-http.js";
15
15
  import { type LocalRuntimeEndpoint } from "../local-control/runtime-discovery.js";
16
16
  import { type LocalMtlsIdentity } from "../local-control/transport-security.js";
17
17
  export declare const LOCAL_ADMISSION_STATUS_PATH: "/status";
@@ -20,6 +20,9 @@ export declare const LOCAL_ADMISSION_HEALTH_PATH: "/health";
20
20
  export declare const LOCAL_ADMISSION_SESSIONS_PATH: "/v1/sessions";
21
21
  export declare const LOCAL_ADMISSION_REPOSITORY_PATH: "/v1/repository";
22
22
  export declare const LOCAL_ADMISSION_EXECUTIONS_PATH: "/v1/executions";
23
+ export declare const LOCAL_ADMISSION_READINESS_PATH: "/v1/readiness";
24
+ export declare const LOCAL_ADMISSION_BRANCH_POLICY_PATH: "/v1/branch-policy";
25
+ export declare const LOCAL_ADMISSION_PULL_REQUEST_CONTEXT_PATH: "/v1/pull-request-context";
23
26
  export declare const LOCAL_ADMISSION_SESSION_ID_HEADER: "x-inari-session-id";
24
27
  export declare const MAX_LOCAL_ADMISSION_BODY_BYTES = 1048576;
25
28
  /**
@@ -31,6 +34,8 @@ export interface AdmissionExecutorClient {
31
34
  verifyReady(): Promise<unknown>;
32
35
  resolveRepository?(repositoryNameWithOwner: string): Promise<RepositoryIdentity>;
33
36
  readEvidence(request: LocalExecutorEvidenceRequest): Promise<unknown>;
37
+ readBranchPolicy?(request: LocalExecutorBranchPolicyRequest): Promise<unknown>;
38
+ readGovernedContract?(request: LocalExecutorGovernedContractRequest): Promise<unknown>;
34
39
  execute(execution: AuthorizedExecution): Promise<unknown>;
35
40
  }
36
41
  export declare function createLocalAdmissionHttpServer(config: LocalAdmissionConfig, version: string, runtimeAuthority: Delegator, executor: AdmissionExecutorClient, options?: {