@dsh-enhanced/assistant-actions 0.1.30

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 (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +247 -0
  3. package/cordis.patch.yml +3 -0
  4. package/lib/broker-cli.d.ts +70 -0
  5. package/lib/broker-cli.d.ts.map +1 -0
  6. package/lib/broker-cli.js +255 -0
  7. package/lib/broker-cli.js.map +1 -0
  8. package/lib/broker-client.d.ts +54 -0
  9. package/lib/broker-client.d.ts.map +1 -0
  10. package/lib/broker-client.js +266 -0
  11. package/lib/broker-client.js.map +1 -0
  12. package/lib/broker-core.d.ts +51 -0
  13. package/lib/broker-core.d.ts.map +1 -0
  14. package/lib/broker-core.js +441 -0
  15. package/lib/broker-core.js.map +1 -0
  16. package/lib/broker-ledger.d.ts +131 -0
  17. package/lib/broker-ledger.d.ts.map +1 -0
  18. package/lib/broker-ledger.js +925 -0
  19. package/lib/broker-ledger.js.map +1 -0
  20. package/lib/broker-peer-linux.d.ts +23 -0
  21. package/lib/broker-peer-linux.d.ts.map +1 -0
  22. package/lib/broker-peer-linux.js +68 -0
  23. package/lib/broker-peer-linux.js.map +1 -0
  24. package/lib/broker-protocol.d.ts +419 -0
  25. package/lib/broker-protocol.d.ts.map +1 -0
  26. package/lib/broker-protocol.js +786 -0
  27. package/lib/broker-protocol.js.map +1 -0
  28. package/lib/broker-server.d.ts +77 -0
  29. package/lib/broker-server.d.ts.map +1 -0
  30. package/lib/broker-server.js +467 -0
  31. package/lib/broker-server.js.map +1 -0
  32. package/lib/cli.d.ts +3 -0
  33. package/lib/cli.d.ts.map +1 -0
  34. package/lib/cli.js +36 -0
  35. package/lib/cli.js.map +1 -0
  36. package/lib/config.d.ts +54 -0
  37. package/lib/config.d.ts.map +1 -0
  38. package/lib/config.js +165 -0
  39. package/lib/config.js.map +1 -0
  40. package/lib/external-delivery-receipt.d.ts +11 -0
  41. package/lib/external-delivery-receipt.d.ts.map +1 -0
  42. package/lib/external-delivery-receipt.js +25 -0
  43. package/lib/external-delivery-receipt.js.map +1 -0
  44. package/lib/github.d.ts +78 -0
  45. package/lib/github.d.ts.map +1 -0
  46. package/lib/github.js +611 -0
  47. package/lib/github.js.map +1 -0
  48. package/lib/index.d.ts +19 -0
  49. package/lib/index.d.ts.map +1 -0
  50. package/lib/index.js +23 -0
  51. package/lib/index.js.map +1 -0
  52. package/lib/ledger.d.ts +78 -0
  53. package/lib/ledger.d.ts.map +1 -0
  54. package/lib/ledger.js +1064 -0
  55. package/lib/ledger.js.map +1 -0
  56. package/lib/repository-readback.d.ts +34 -0
  57. package/lib/repository-readback.d.ts.map +1 -0
  58. package/lib/repository-readback.js +193 -0
  59. package/lib/repository-readback.js.map +1 -0
  60. package/lib/service.d.ts +86 -0
  61. package/lib/service.d.ts.map +1 -0
  62. package/lib/service.js +1259 -0
  63. package/lib/service.js.map +1 -0
  64. package/lib/types.d.ts +174 -0
  65. package/lib/types.d.ts.map +1 -0
  66. package/lib/types.js +2 -0
  67. package/lib/types.js.map +1 -0
  68. package/lib/verified-delivery.d.ts +104 -0
  69. package/lib/verified-delivery.d.ts.map +1 -0
  70. package/lib/verified-delivery.js +262 -0
  71. package/lib/verified-delivery.js.map +1 -0
  72. package/lib/version.d.ts +2 -0
  73. package/lib/version.d.ts.map +1 -0
  74. package/lib/version.js +2 -0
  75. package/lib/version.js.map +1 -0
  76. package/package.json +123 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAI7C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAErI,MAAM,WAAW,oBAAoB;IAAG,IAAI,EAAE,iBAAiB,CAAA;CAAE;AACjE,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,kBAAkB,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AACD,MAAM,MAAM,YAAY,GAAG,oBAAoB,GAAG,wBAAwB,CAAA;AAC1E,MAAM,WAAW,MAAM;IAAG,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE;AACpJ,KAAK,iCAAiC,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAA;AAC3E,MAAM,MAAM,eAAe,GACvB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,cAAc,EAAE,EAAE,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,GAC9F;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,EAAE,CAAC;IAAC,cAAc,EAAE,yBAAyB,EAAE,CAAC;IAAC,MAAM,EAAE,iCAAiC,CAAA;CAAE,CAAA;AAe7H,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CA6BhC,CAAA;AAEF,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEzD;AAQD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CA2D7D;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAQnE;AACD,eAAO,MAAM,WAAW,GAAI,SAAS,aAAa,KAAG,MAA4J,CAAA;AAEjN,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CASrF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,uBAAuB,GAAG,uBAAuB,CASjG"}
package/lib/config.js ADDED
@@ -0,0 +1,165 @@
1
+ import Schema from '@deepseek-ai/schemastery';
2
+ import { homedir } from 'node:os';
3
+ import { isAbsolute, join, resolve } from 'node:path';
4
+ import { normalizeBrokerGrantProjection } from './broker-protocol.js';
5
+ const positive = (max) => Schema.number().step(1).min(1).max(max);
6
+ const externalGrantSchema = Schema.object({
7
+ id: Schema.string().required(), revision: positive(Number.MAX_SAFE_INTEGER).required(), grantDigest: Schema.string().required(),
8
+ owner: Schema.object({ principalDigest: Schema.string().required(), principalRecordId: Schema.string().required(), principalVersion: positive(Number.MAX_SAFE_INTEGER).required(),
9
+ workspace: Schema.string().required(), preset: Schema.string().required(), bindingId: Schema.string().required(), bindingVersion: positive(Number.MAX_SAFE_INTEGER).required(), bindingGeneration: positive(Number.MAX_SAFE_INTEGER).required() }).required(),
10
+ sessionId: Schema.string().required(),
11
+ destination: Schema.object({ classification: Schema.const('github-repository').required(), repository: Schema.string().required(), branch: Schema.string().required(), baseBranch: Schema.string(), paths: Schema.array(Schema.string()).required() }).required(),
12
+ expiresAt: positive(Number.MAX_SAFE_INTEGER).required(), maxActions: positive(10_000).required(), maxTotalBytes: positive(64 * 1024 * 1024).required(),
13
+ source: Schema.object({ classification: Schema.union(['public', 'internal', 'confidential', 'restricted']).required(), provenanceDigest: Schema.string().required() }).required(),
14
+ maxCostUnits: Schema.number().step(1).min(0).max(Number.MAX_SAFE_INTEGER).required(),
15
+ allowedOperations: Schema.array(Schema.union(['commit', 'inspect', 'pull-request'])).required(),
16
+ allowedInspectKinds: Schema.array(Schema.union(['repository', 'branch', 'file', 'pull-request', 'checks', 'reviews'])).required(),
17
+ verifiedDelivery: Schema.object({ ownerRouteId: Schema.string().required(), budgetId: Schema.string().required(), acceptance: Schema.union(['goal-outcome', 'goal-step']) }),
18
+ });
19
+ export const Config = Schema.object({
20
+ stateRoot: Schema.string().default(join(homedir(), '.dsh', 'assistant-actions')),
21
+ grants: Schema.array(Schema.object({
22
+ id: Schema.string().required(), revision: positive(Number.MAX_SAFE_INTEGER).required(),
23
+ principalDigest: Schema.string().required(), principalRecordId: Schema.string().required(), principalVersion: positive(Number.MAX_SAFE_INTEGER).required(),
24
+ workspace: Schema.string().required(), agentPreset: Schema.string().required(), repository: Schema.string().required(), branch: Schema.string().required(),
25
+ paths: Schema.array(Schema.string()).required(), credentialHandle: Schema.string().required(), expiresAt: positive(Number.MAX_SAFE_INTEGER).required(),
26
+ maxActions: positive(10_000).required(), maxTotalBytes: positive(64 * 1024 * 1024).required(),
27
+ repoWorkflow: Schema.union([Schema.object({ baseBranch: Schema.string().required(), allowBranchCreate: Schema.boolean().required(), allowPullRequest: Schema.boolean().required() })]),
28
+ verifiedDelivery: Schema.union([Schema.object({ ownerRouteId: Schema.string().required(), budgetId: Schema.string().required(), acceptance: Schema.union(['goal-outcome', 'goal-step']) })]),
29
+ rollback: Schema.union([Schema.object({ allowRollback: Schema.const(true).required(), budgetId: Schema.string().required(),
30
+ maxActions: positive(10_000).required(), maxTotalBytes: positive(64 * 1024 * 1024).required() })]),
31
+ })).default([]),
32
+ externalGrants: Schema.array(externalGrantSchema).default([]),
33
+ broker: Schema.union([
34
+ Schema.object({ mode: Schema.const('embedded-compat').required() }),
35
+ Schema.object({
36
+ mode: Schema.const('external-unix-v1').required(), actionSocketPath: Schema.string().required(), brokerId: Schema.string().required(),
37
+ brokerPublicKeyPath: Schema.string().required(), clientKeyId: Schema.string().required(), clientSigningKeyPath: Schema.string().required(),
38
+ clientInstanceId: Schema.string().required(), clientGeneration: positive(Number.MAX_SAFE_INTEGER).required(),
39
+ requestTimeoutMs: positive(300_000).default(30_000), helloTtlMs: positive(300_000).default(30_000),
40
+ expectedSocketUid: Schema.number().step(1).min(0).max(0x7fffffff).required(), expectedSocketGid: Schema.number().step(1).min(0).max(0x7fffffff).required(),
41
+ expectedSocketMode: Schema.number().step(1).min(0).max(0o777).default(0o600),
42
+ expectedSocketParentUid: Schema.number().step(1).min(0).max(0x7fffffff), expectedSocketParentGid: Schema.number().step(1).min(0).max(0x7fffffff),
43
+ expectedSocketParentMode: Schema.number().step(1).min(0).max(0o777).default(0o700),
44
+ expectedBrokerPeerUid: Schema.number().step(1).min(0).max(0x7fffffff).required(), expectedBrokerPeerGid: Schema.number().step(1).min(0).max(0x7fffffff).required(),
45
+ minimumBrokerGeneration: positive(Number.MAX_SAFE_INTEGER).default(1),
46
+ }),
47
+ ]).default({ mode: 'embedded-compat' }),
48
+ });
49
+ const text = (value, max = 256) => typeof value === 'string' && value.length > 0 && value.length <= max && !/[\p{Cc}]/u.test(value);
50
+ export function validPath(value) {
51
+ return text(value, 1024) && !value.includes('\\') && value.split('/').every(part => part !== '' && part !== '.' && part !== '..' && part.toLowerCase() !== '.git');
52
+ }
53
+ const identifier = (value) => text(value, 128) && /^[A-Za-z0-9][A-Za-z0-9._:-]*$/u.test(value);
54
+ const canonicalAbsolute = (value) => typeof value === 'string' && isAbsolute(value) && resolve(value) === value && value !== '/' && !value.includes('\0');
55
+ function validateExternalGrant(grant) {
56
+ try {
57
+ normalizeBrokerGrantProjection(grant);
58
+ }
59
+ catch {
60
+ throw new Error('assistant-actions: invalid external grant projection');
61
+ }
62
+ }
63
+ export function validateConfig(input) {
64
+ if (!input || typeof input !== 'object' || Array.isArray(input)
65
+ || Object.keys(input).some(key => !['stateRoot', 'grants', 'externalGrants', 'broker'].includes(key)))
66
+ throw new Error('assistant-actions: invalid config');
67
+ const stateRoot = input.stateRoot ?? join(homedir(), '.dsh', 'assistant-actions');
68
+ if (!isAbsolute(stateRoot) || resolve(stateRoot) !== stateRoot || stateRoot === '/')
69
+ throw new Error('assistant-actions: canonical private state root required');
70
+ const grants = structuredClone(input.grants ?? []);
71
+ if (!Array.isArray(grants) || grants.length > 1000 || new Set(grants.map(grant => grant.id)).size !== grants.length)
72
+ throw new Error('assistant-actions: invalid grants');
73
+ for (const grant of grants) {
74
+ if (!grant || ![14, 15, 16, 17].includes(Object.keys(grant).length)
75
+ || Object.keys(grant).some(key => !['id', 'revision', 'principalDigest', 'principalRecordId', 'principalVersion', 'workspace', 'agentPreset', 'repository', 'branch', 'paths', 'credentialHandle', 'expiresAt', 'maxActions', 'maxTotalBytes', 'repoWorkflow', 'verifiedDelivery', 'rollback'].includes(key))
76
+ || grant.verifiedDelivery !== undefined && (!grant.verifiedDelivery || ![2, 3].includes(Object.keys(grant.verifiedDelivery).length) || Object.keys(grant.verifiedDelivery).some(key => !['ownerRouteId', 'budgetId', 'acceptance'].includes(key)) || grant.verifiedDelivery.acceptance !== undefined && !['goal-outcome', 'goal-step'].includes(grant.verifiedDelivery.acceptance) || !text(grant.verifiedDelivery.ownerRouteId, 200) || !text(grant.verifiedDelivery.budgetId, 200))
77
+ || grant.rollback !== undefined && (!grant.rollback || Object.keys(grant.rollback).length !== 4
78
+ || Object.keys(grant.rollback).some(key => !['allowRollback', 'budgetId', 'maxActions', 'maxTotalBytes'].includes(key))
79
+ || grant.rollback.allowRollback !== true || !text(grant.rollback.budgetId, 200)
80
+ || !Number.isSafeInteger(grant.rollback.maxActions) || grant.rollback.maxActions < 1 || grant.rollback.maxActions > 10_000
81
+ || !Number.isSafeInteger(grant.rollback.maxTotalBytes) || grant.rollback.maxTotalBytes < 1 || grant.rollback.maxTotalBytes > 64 * 1024 * 1024)
82
+ || !text(grant.id) || !Number.isSafeInteger(grant.revision) || grant.revision < 1
83
+ || !/^[0-9a-f]{64}$/.test(grant.principalDigest) || !text(grant.principalRecordId) || !Number.isSafeInteger(grant.principalVersion) || grant.principalVersion < 1
84
+ || !isAbsolute(grant.workspace) || resolve(grant.workspace) !== grant.workspace || !text(grant.agentPreset)
85
+ || !/^[A-Za-z0-9][A-Za-z0-9-]*\/[A-Za-z0-9][A-Za-z0-9._-]*$/.test(grant.repository) || grant.repository.length > 256
86
+ || !text(grant.branch) || !/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(grant.branch) || grant.branch.includes('..') || grant.branch.startsWith('refs/')
87
+ || grant.branch.split('/').some(part => !part || part.startsWith('.') || part.endsWith('.') || part.endsWith('.lock'))
88
+ || !Array.isArray(grant.paths) || grant.paths.length < 1 || grant.paths.length > 128 || !grant.paths.every(validPath) || new Set(grant.paths).size !== grant.paths.length
89
+ || !text(grant.credentialHandle) || !Number.isSafeInteger(grant.expiresAt) || grant.expiresAt < 1
90
+ || !Number.isSafeInteger(grant.maxActions) || grant.maxActions < 1 || grant.maxActions > 10_000
91
+ || !Number.isSafeInteger(grant.maxTotalBytes) || grant.maxTotalBytes < 1 || grant.maxTotalBytes > 64 * 1024 * 1024
92
+ || (grant.repoWorkflow !== undefined && (!grant.repoWorkflow || Object.keys(grant.repoWorkflow).length !== 3 || !text(grant.repoWorkflow.baseBranch)
93
+ || !/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(grant.repoWorkflow.baseBranch) || grant.repoWorkflow.baseBranch.includes('..') || grant.repoWorkflow.baseBranch.startsWith('refs/')
94
+ || grant.repoWorkflow.baseBranch === grant.branch || grant.repoWorkflow.baseBranch.split('/').some(part => !part || part.startsWith('.') || part.endsWith('.') || part.endsWith('.lock'))
95
+ || typeof grant.repoWorkflow.allowBranchCreate !== 'boolean' || typeof grant.repoWorkflow.allowPullRequest !== 'boolean')))
96
+ throw new Error('assistant-actions: invalid grant');
97
+ }
98
+ const rawBroker = input.broker === undefined ? { mode: 'embedded-compat' } : structuredClone(input.broker);
99
+ const externalGrants = structuredClone(input.externalGrants ?? []);
100
+ if (!rawBroker || typeof rawBroker !== 'object' || Array.isArray(rawBroker) || !('mode' in rawBroker))
101
+ throw new Error('assistant-actions: invalid broker config');
102
+ if (rawBroker.mode === 'embedded-compat') {
103
+ if (Object.keys(rawBroker).length !== 1 || externalGrants.length !== 0)
104
+ throw new Error('assistant-actions: external grants require external broker mode');
105
+ return { stateRoot, grants, externalGrants: [], broker: rawBroker };
106
+ }
107
+ if (rawBroker.mode !== 'external-unix-v1'
108
+ || Object.keys(rawBroker).some(key => !['mode', 'actionSocketPath', 'brokerId', 'brokerPublicKeyPath', 'clientKeyId', 'clientSigningKeyPath', 'clientInstanceId', 'clientGeneration', 'requestTimeoutMs', 'helloTtlMs', 'expectedSocketUid', 'expectedSocketGid', 'expectedSocketMode', 'expectedSocketParentUid', 'expectedSocketParentGid', 'expectedSocketParentMode', 'expectedBrokerPeerUid', 'expectedBrokerPeerGid', 'minimumBrokerGeneration'].includes(key)))
109
+ throw new Error('assistant-actions: invalid external broker config');
110
+ const broker = { ...rawBroker, requestTimeoutMs: rawBroker.requestTimeoutMs ?? 30_000, helloTtlMs: rawBroker.helloTtlMs ?? 30_000, expectedSocketMode: rawBroker.expectedSocketMode ?? 0o600,
111
+ expectedSocketParentUid: rawBroker.expectedSocketParentUid ?? rawBroker.expectedSocketUid, expectedSocketParentGid: rawBroker.expectedSocketParentGid ?? rawBroker.expectedSocketGid, expectedSocketParentMode: rawBroker.expectedSocketParentMode ?? 0o700, minimumBrokerGeneration: rawBroker.minimumBrokerGeneration ?? 1 };
112
+ if (grants.length !== 0 || !Array.isArray(externalGrants) || externalGrants.length > 1000 || new Set(externalGrants.map(grant => grant.id)).size !== externalGrants.length
113
+ || !canonicalAbsolute(broker.actionSocketPath) || Buffer.byteLength(broker.actionSocketPath) > 100 || !identifier(broker.brokerId)
114
+ || !canonicalAbsolute(broker.brokerPublicKeyPath) || !canonicalAbsolute(broker.clientSigningKeyPath) || broker.brokerPublicKeyPath === broker.clientSigningKeyPath
115
+ || !identifier(broker.clientKeyId) || !identifier(broker.clientInstanceId) || !Number.isSafeInteger(broker.clientGeneration) || broker.clientGeneration < 1
116
+ || !Number.isSafeInteger(broker.requestTimeoutMs) || broker.requestTimeoutMs < 1 || broker.requestTimeoutMs > 300_000
117
+ || !Number.isSafeInteger(broker.helloTtlMs) || broker.helloTtlMs < 1 || broker.helloTtlMs > 300_000
118
+ || !Number.isSafeInteger(broker.expectedSocketUid) || broker.expectedSocketUid < 0 || broker.expectedSocketUid > 0x7fffffff
119
+ || !Number.isSafeInteger(broker.expectedSocketGid) || broker.expectedSocketGid < 0 || broker.expectedSocketGid > 0x7fffffff
120
+ || !Number.isSafeInteger(broker.expectedSocketMode) || broker.expectedSocketMode < 0 || broker.expectedSocketMode > 0o777
121
+ || !Number.isSafeInteger(broker.expectedSocketParentUid) || broker.expectedSocketParentUid < 0 || broker.expectedSocketParentUid > 0x7fffffff
122
+ || !Number.isSafeInteger(broker.expectedSocketParentGid) || broker.expectedSocketParentGid < 0 || broker.expectedSocketParentGid > 0x7fffffff
123
+ || !Number.isSafeInteger(broker.expectedSocketParentMode) || broker.expectedSocketParentMode < 0 || broker.expectedSocketParentMode > 0o777
124
+ || !Number.isSafeInteger(broker.expectedBrokerPeerUid) || broker.expectedBrokerPeerUid < 0 || broker.expectedBrokerPeerUid > 0x7fffffff
125
+ || !Number.isSafeInteger(broker.expectedBrokerPeerGid) || broker.expectedBrokerPeerGid < 0 || broker.expectedBrokerPeerGid > 0x7fffffff
126
+ || !Number.isSafeInteger(broker.minimumBrokerGeneration) || broker.minimumBrokerGeneration < 1)
127
+ throw new Error('assistant-actions: invalid external broker config');
128
+ const normalizedExternalGrants = externalGrants.map(grant => { validateExternalGrant(grant); return normalizeBrokerGrantProjection(grant); });
129
+ return { stateRoot, grants: [], externalGrants: normalizedExternalGrants, broker };
130
+ }
131
+ export function normalizeCommit(value) {
132
+ if (!value || Object.keys(value).length !== 5 || !text(value.grantId) || !text(value.idempotencyKey)
133
+ || !/^[0-9a-f]{40}$/.test(value.expectedHeadOid) || !text(value.headline, 200)
134
+ || !Array.isArray(value.files) || value.files.length < 1 || value.files.length > 32
135
+ || !value.files.every(file => file && Object.keys(file).length === 2 && validPath(file.path) && typeof file.content === 'string'
136
+ && Buffer.byteLength(file.content) <= 1_048_576 && Buffer.from(file.content).toString('utf8') === file.content)
137
+ || new Set(value.files.map(file => file.path)).size !== value.files.length || commitBytes(value) > 1_048_576)
138
+ throw new Error('assistant-actions: invalid commit request');
139
+ return structuredClone(value);
140
+ }
141
+ export const commitBytes = (request) => Buffer.byteLength(request.headline) + request.files.reduce((sum, file) => sum + Buffer.byteLength(file.path) + Buffer.byteLength(file.content), 0);
142
+ export function normalizeCompensation(value) {
143
+ if (!value || typeof value !== 'object' || Array.isArray(value)
144
+ || Object.keys(value).length !== 6
145
+ || Object.keys(value).some(key => !['grantId', 'idempotencyKey', 'forwardActionId', 'forwardActionVersion', 'forwardRequestDigest', 'forwardCommitOid'].includes(key))
146
+ || !text(value.grantId) || !text(value.idempotencyKey) || !text(value.forwardActionId)
147
+ || !Number.isSafeInteger(value.forwardActionVersion) || value.forwardActionVersion < 1
148
+ || !/^[0-9a-f]{64}$/.test(value.forwardRequestDigest)
149
+ || !/^[0-9a-f]{40,128}$/.test(value.forwardCommitOid))
150
+ throw new Error('assistant-actions: invalid compensation request');
151
+ return structuredClone(value);
152
+ }
153
+ export function normalizeVerifiedDelivery(input) {
154
+ if (!input || typeof input !== 'object' || Array.isArray(input)
155
+ || Object.keys(input).some(key => !['grantId', 'idempotencyKey', 'expectedHeadOid', 'headline', 'paths', 'pullRequest'].includes(key))
156
+ || !Array.isArray(input.paths) || input.paths.length < 1 || input.paths.length > 32 || !input.paths.every(validPath)
157
+ || new Set(input.paths).size !== input.paths.length)
158
+ throw new Error('assistant-actions: invalid verified delivery');
159
+ normalizeCommit({ grantId: input.grantId, idempotencyKey: input.idempotencyKey, expectedHeadOid: input.expectedHeadOid, headline: input.headline, files: input.paths.map(path => ({ path, content: '' })) });
160
+ if (input.pullRequest !== undefined && (!input.pullRequest || Object.keys(input.pullRequest).length !== 2
161
+ || !text(input.pullRequest.title, 200) || typeof input.pullRequest.body !== 'string' || Buffer.byteLength(input.pullRequest.body) > 65536))
162
+ throw new Error('assistant-actions: invalid verified pull request');
163
+ return structuredClone(input);
164
+ }
165
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { GitHubBrokerClientOptions } from './broker-client.js';
2
+ import { type BrokerClientRequest, type BrokerOperationPayload, type BrokerRequestIntent, type BrokerServerHello, type BrokerServerResponse } from './broker-protocol.js';
3
+ /** Signed history without artifact bytes; reconstruct payload from current accepted artifacts. */
4
+ export interface ExternalDeliveryReceipt {
5
+ hello: BrokerServerHello;
6
+ request: Omit<BrokerClientRequest, 'payload'>;
7
+ response: BrokerServerResponse;
8
+ }
9
+ export declare function captureExternalDeliveryReceipt(hello: BrokerServerHello, request: BrokerClientRequest, response: BrokerServerResponse): ExternalDeliveryReceipt;
10
+ export declare function verifyExternalDeliveryReceipt(receipt: ExternalDeliveryReceipt, payload: BrokerOperationPayload, expected: Pick<BrokerRequestIntent, 'actionId' | 'grantId' | 'grantRevision' | 'grantDigest' | 'owner' | 'sessionId' | 'operation' | 'source' | 'destination'>, client: GitHubBrokerClientOptions): BrokerServerResponse;
11
+ //# sourceMappingURL=external-delivery-receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-delivery-receipt.d.ts","sourceRoot":"","sources":["../src/external-delivery-receipt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAEL,KAAK,mBAAmB,EAAE,KAAK,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,EACnI,MAAM,sBAAsB,CAAA;AAE7B,kGAAkG;AAClG,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,iBAAiB,CAAA;IACxB,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA;IAC7C,QAAQ,EAAE,oBAAoB,CAAA;CAC/B;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,uBAAuB,CAG9J;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,sBAAsB,EAC7G,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,GAAG,eAAe,GAAG,aAAa,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC,EAC9J,MAAM,EAAE,yBAAyB,GAAG,oBAAoB,CAezD"}
@@ -0,0 +1,25 @@
1
+ import { createPublicKey } from 'node:crypto';
2
+ import { brokerDigest, verifyBrokerClientRequest, verifyBrokerServerHello, verifyBrokerServerResponse, } from './broker-protocol.js';
3
+ export function captureExternalDeliveryReceipt(hello, request, response) {
4
+ const { payload: _payload, ...header } = request;
5
+ return structuredClone({ hello, request: header, response });
6
+ }
7
+ export function verifyExternalDeliveryReceipt(receipt, payload, expected, client) {
8
+ // This verifies historical signatures, not present authority or remote freshness.
9
+ // The caller independently revalidates owner/goal/grant and performs fresh reads.
10
+ const historicalTime = Math.min(receipt.hello.expiresAt, receipt.request.deadline) - 1;
11
+ const hello = verifyBrokerServerHello(receipt.hello, client.serverPublicKey, { now: historicalTime });
12
+ const request = verifyBrokerClientRequest({ ...receipt.request, payload }, hello, createPublicKey(client.clientPrivateKey), { now: historicalTime, expectedClientKeyId: client.clientKeyId });
13
+ for (const key of Object.keys(expected)) {
14
+ if (brokerDigest(request[key]) !== brokerDigest(expected[key]))
15
+ throw new Error('assistant-actions: external delivery receipt scope mismatch');
16
+ }
17
+ if (request.client.instanceId !== client.source.instanceId || request.client.kind !== client.source.kind
18
+ || hello.instanceId !== client.expectedServerInstanceId)
19
+ throw new Error('assistant-actions: external delivery receipt identity mismatch');
20
+ const response = verifyBrokerServerResponse(receipt.response, request, hello, client.serverPublicKey);
21
+ if (response.status !== 'succeeded')
22
+ throw new Error('assistant-actions: external delivery receipt is not successful');
23
+ return response;
24
+ }
25
+ //# sourceMappingURL=external-delivery-receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-delivery-receipt.js","sourceRoot":"","sources":["../src/external-delivery-receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,OAAO,EACL,YAAY,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,0BAA0B,GAE7F,MAAM,sBAAsB,CAAA;AAS7B,MAAM,UAAU,8BAA8B,CAAC,KAAwB,EAAE,OAA4B,EAAE,QAA8B;IACnI,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,CAAA;IAChD,OAAO,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAAgC,EAAE,OAA+B,EAC7G,QAA8J,EAC9J,MAAiC;IACjC,kFAAkF;IAClF,kFAAkF;IAClF,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACtF,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAA;IACrG,MAAM,OAAO,GAAG,yBAAyB,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,EACxH,EAAE,GAAG,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IACnE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAA8B,EAAE,CAAC;QACrE,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI;WACnG,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,wBAAwB;QAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IAC5I,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;IACrG,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IACtH,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { request as httpsRequest } from 'node:https';
2
+ import type { ActionGrant, ActionResult, CommitRequest, CompensationPreimage, CompensationPreimageFile, CompensationResult } from './types.js';
3
+ export interface GitHubCommitInput {
4
+ actionId: string;
5
+ grant: ActionGrant;
6
+ request: CommitRequest;
7
+ token: string;
8
+ signal: AbortSignal;
9
+ }
10
+ export type GitHubFilePreimage = CompensationPreimageFile;
11
+ export type GitHubPreimageSnapshot = CompensationPreimage;
12
+ export interface GitHubPreimageInput {
13
+ grant: ActionGrant;
14
+ commitOid: string;
15
+ paths: readonly string[];
16
+ token: string;
17
+ signal: AbortSignal;
18
+ }
19
+ export interface GitHubBranchHead {
20
+ repository: string;
21
+ branch: string;
22
+ headOid: string;
23
+ }
24
+ export interface GitHubCompensationInput {
25
+ actionId: string;
26
+ grant: ActionGrant;
27
+ forwardCommitOid: string;
28
+ preimage: GitHubPreimageSnapshot;
29
+ token: string;
30
+ signal: AbortSignal;
31
+ }
32
+ export type GitHubCompensationResult = CompensationResult;
33
+ export interface GitHubCompensationTransports {
34
+ graphql?: typeof httpsRequest;
35
+ rest?: typeof httpsRequest;
36
+ }
37
+ export type { CompensationPreimage, CompensationPreimageFile, CompensationResult } from './types.js';
38
+ type GitHubTransport = typeof httpsRequest;
39
+ /** Commit exactly the approved files through GitHub's atomic expected-head mutation. */
40
+ export declare function commitOnGitHub(input: GitHubCommitInput, transport?: GitHubTransport): Promise<ActionResult>;
41
+ type RestTransport = typeof httpsRequest;
42
+ /** Read exact allowed file states at one immutable Git commit without following redirects. */
43
+ export declare function readGitHubPreimage(input: GitHubPreimageInput, transport?: RestTransport): Promise<GitHubPreimageSnapshot | undefined>;
44
+ /** Inspect only the grant-fixed branch head and bind the observation to its scope. */
45
+ export declare function inspectGitHubBranchHead(input: {
46
+ grant: ActionGrant;
47
+ token: string;
48
+ signal: AbortSignal;
49
+ }, transport?: RestTransport): Promise<GitHubBranchHead | undefined>;
50
+ /** Restore a captured preimage through an expected-head commit; never force-pushes. */
51
+ export declare function createCompensatingCommitOnGitHub(input: GitHubCompensationInput, transports?: GitHubCompensationTransports): Promise<GitHubCompensationResult>;
52
+ export declare function createBranchOnGitHub(input: {
53
+ actionId: string;
54
+ grant: ActionGrant;
55
+ baseHeadOid: string;
56
+ token: string;
57
+ signal: AbortSignal;
58
+ }, transport?: RestTransport): Promise<ActionResult>;
59
+ export declare function createPullRequestOnGitHub(input: {
60
+ actionId: string;
61
+ grant: ActionGrant;
62
+ expectedHeadOid: string;
63
+ title: string;
64
+ body: string;
65
+ token: string;
66
+ signal: AbortSignal;
67
+ }, transport?: RestTransport): Promise<ActionResult>;
68
+ export declare function inspectGitHub(input: {
69
+ grant: ActionGrant;
70
+ kind: 'repository' | 'branch' | 'file' | 'pull-request' | 'checks' | 'reviews';
71
+ path?: string;
72
+ pullRequestNumber?: number;
73
+ token: string;
74
+ signal: AbortSignal;
75
+ }, transport?: RestTransport): Promise<{
76
+ observed: Record<string, unknown>;
77
+ } | undefined>;
78
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}