@agent-relay/sdk 4.0.2 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  2. package/bin/agent-relay-broker-darwin-x64 +0 -0
  3. package/bin/agent-relay-broker-linux-arm64 +0 -0
  4. package/bin/agent-relay-broker-linux-x64 +0 -0
  5. package/dist/client.d.ts +3 -10
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +2 -0
  8. package/dist/client.js.map +1 -1
  9. package/dist/provisioner/__tests__/audit.test.d.ts +2 -0
  10. package/dist/provisioner/__tests__/audit.test.d.ts.map +1 -0
  11. package/dist/provisioner/__tests__/audit.test.js +45 -0
  12. package/dist/provisioner/__tests__/audit.test.js.map +1 -0
  13. package/dist/provisioner/__tests__/compiler.test.d.ts +2 -0
  14. package/dist/provisioner/__tests__/compiler.test.d.ts.map +1 -0
  15. package/dist/provisioner/__tests__/compiler.test.js +345 -0
  16. package/dist/provisioner/__tests__/compiler.test.js.map +1 -0
  17. package/dist/provisioner/__tests__/presets.test.d.ts +2 -0
  18. package/dist/provisioner/__tests__/presets.test.d.ts.map +1 -0
  19. package/dist/provisioner/__tests__/presets.test.js +23 -0
  20. package/dist/provisioner/__tests__/presets.test.js.map +1 -0
  21. package/dist/provisioner/__tests__/seeder.test.d.ts +2 -0
  22. package/dist/provisioner/__tests__/seeder.test.d.ts.map +1 -0
  23. package/dist/provisioner/__tests__/seeder.test.js +224 -0
  24. package/dist/provisioner/__tests__/seeder.test.js.map +1 -0
  25. package/dist/provisioner/__tests__/tar-seeder.test.d.ts +2 -0
  26. package/dist/provisioner/__tests__/tar-seeder.test.d.ts.map +1 -0
  27. package/dist/provisioner/__tests__/tar-seeder.test.js +191 -0
  28. package/dist/provisioner/__tests__/tar-seeder.test.js.map +1 -0
  29. package/dist/provisioner/__tests__/token-factory.test.d.ts +2 -0
  30. package/dist/provisioner/__tests__/token-factory.test.d.ts.map +1 -0
  31. package/dist/provisioner/__tests__/token-factory.test.js +127 -0
  32. package/dist/provisioner/__tests__/token-factory.test.js.map +1 -0
  33. package/dist/provisioner/__tests__/token.test.d.ts +2 -0
  34. package/dist/provisioner/__tests__/token.test.d.ts.map +1 -0
  35. package/dist/provisioner/__tests__/token.test.js +44 -0
  36. package/dist/provisioner/__tests__/token.test.js.map +1 -0
  37. package/dist/provisioner/audit.d.ts +19 -0
  38. package/dist/provisioner/audit.d.ts.map +1 -0
  39. package/dist/provisioner/audit.js +74 -0
  40. package/dist/provisioner/audit.js.map +1 -0
  41. package/dist/provisioner/compiler.d.ts +23 -0
  42. package/dist/provisioner/compiler.d.ts.map +1 -0
  43. package/dist/provisioner/compiler.js +355 -0
  44. package/dist/provisioner/compiler.js.map +1 -0
  45. package/dist/provisioner/index.d.ts +9 -0
  46. package/dist/provisioner/index.d.ts.map +1 -0
  47. package/dist/provisioner/index.js +266 -0
  48. package/dist/provisioner/index.js.map +1 -0
  49. package/dist/provisioner/mount.d.ts +14 -0
  50. package/dist/provisioner/mount.d.ts.map +1 -0
  51. package/dist/provisioner/mount.js +329 -0
  52. package/dist/provisioner/mount.js.map +1 -0
  53. package/dist/provisioner/seeder.d.ts +17 -0
  54. package/dist/provisioner/seeder.d.ts.map +1 -0
  55. package/dist/provisioner/seeder.js +419 -0
  56. package/dist/provisioner/seeder.js.map +1 -0
  57. package/dist/provisioner/token.d.ts +38 -0
  58. package/dist/provisioner/token.d.ts.map +1 -0
  59. package/dist/provisioner/token.js +74 -0
  60. package/dist/provisioner/token.js.map +1 -0
  61. package/dist/provisioner/types.d.ts +133 -0
  62. package/dist/provisioner/types.d.ts.map +1 -0
  63. package/dist/provisioner/types.js +2 -0
  64. package/dist/provisioner/types.js.map +1 -0
  65. package/dist/relay.d.ts +6 -0
  66. package/dist/relay.d.ts.map +1 -1
  67. package/dist/relay.js +17 -5
  68. package/dist/relay.js.map +1 -1
  69. package/dist/types.d.ts +9 -0
  70. package/dist/types.d.ts.map +1 -1
  71. package/dist/workflows/__tests__/e2e-permissions.test.d.ts +2 -0
  72. package/dist/workflows/__tests__/e2e-permissions.test.d.ts.map +1 -0
  73. package/dist/workflows/__tests__/e2e-permissions.test.js +331 -0
  74. package/dist/workflows/__tests__/e2e-permissions.test.js.map +1 -0
  75. package/dist/workflows/__tests__/permission-types.test.d.ts +2 -0
  76. package/dist/workflows/__tests__/permission-types.test.d.ts.map +1 -0
  77. package/dist/workflows/__tests__/permission-types.test.js +124 -0
  78. package/dist/workflows/__tests__/permission-types.test.js.map +1 -0
  79. package/dist/workflows/__tests__/permissions-integration.test.d.ts +2 -0
  80. package/dist/workflows/__tests__/permissions-integration.test.d.ts.map +1 -0
  81. package/dist/workflows/__tests__/permissions-integration.test.js +526 -0
  82. package/dist/workflows/__tests__/permissions-integration.test.js.map +1 -0
  83. package/dist/workflows/dry-run-format.d.ts.map +1 -1
  84. package/dist/workflows/dry-run-format.js +8 -0
  85. package/dist/workflows/dry-run-format.js.map +1 -1
  86. package/dist/workflows/runner.d.ts +14 -0
  87. package/dist/workflows/runner.d.ts.map +1 -1
  88. package/dist/workflows/runner.js +455 -6
  89. package/dist/workflows/runner.js.map +1 -1
  90. package/dist/workflows/types.d.ts +190 -0
  91. package/dist/workflows/types.d.ts.map +1 -1
  92. package/dist/workflows/types.js +29 -0
  93. package/dist/workflows/types.js.map +1 -1
  94. package/package.json +6 -2
@@ -0,0 +1,44 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { DEFAULT_WORKFLOW_TOKEN_TTL_SECONDS, mintAgentToken } from '../token.js';
4
+ function decodeJwtPayload(token) {
5
+ const [, payload] = token.split('.');
6
+ return JSON.parse(Buffer.from(payload, 'base64url').toString('utf8'));
7
+ }
8
+ test('mintAgentToken returns a valid JWT', () => {
9
+ const token = mintAgentToken({
10
+ secret: 'test-secret',
11
+ agentName: 'worker',
12
+ workspace: 'workspace-123',
13
+ scopes: ['relayfile:fs:read:/src/index.ts'],
14
+ });
15
+ const parts = token.split('.');
16
+ assert.equal(parts.length, 3);
17
+ assert.ok(parts.every((part) => /^[A-Za-z0-9_-]+$/u.test(part)));
18
+ });
19
+ test('mintAgentToken payload contains agent_name, workspace, and scopes', () => {
20
+ const scopes = ['relayfile:fs:read:/src/index.ts', 'relayfile:fs:write:/src/index.ts'];
21
+ const token = mintAgentToken({
22
+ secret: 'test-secret',
23
+ agentName: 'compiler',
24
+ workspace: 'workspace-abc',
25
+ scopes,
26
+ });
27
+ const payload = decodeJwtPayload(token);
28
+ assert.equal(payload.agent_name, 'compiler');
29
+ assert.equal(payload.wks, 'workspace-abc');
30
+ assert.equal(payload.workspace_id, 'workspace-abc');
31
+ assert.deepEqual(payload.scopes, scopes);
32
+ });
33
+ test('mintAgentToken defaults expiry to 2 hours', () => {
34
+ const token = mintAgentToken({
35
+ secret: 'test-secret',
36
+ agentName: 'worker',
37
+ workspace: 'workspace-123',
38
+ scopes: [],
39
+ });
40
+ const payload = decodeJwtPayload(token);
41
+ assert.equal(payload.exp - payload.iat, DEFAULT_WORKFLOW_TOKEN_TTL_SECONDS);
42
+ assert.equal(payload.exp - payload.iat, 2 * 60 * 60);
43
+ });
44
+ //# sourceMappingURL=token.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.test.js","sourceRoot":"","sources":["../../../src/provisioner/__tests__/token.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kCAAkC,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAC;AAEnG,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAgB,CAAC;AACvF,CAAC;AAED,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC9C,MAAM,KAAK,GAAG,cAAc,CAAC;QAC3B,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,CAAC,iCAAiC,CAAC;KAC5C,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,MAAM,GAAG,CAAC,iCAAiC,EAAE,kCAAkC,CAAC,CAAC;IACvF,MAAM,KAAK,GAAG,cAAc,CAAC;QAC3B,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,eAAe;QAC1B,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC3C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IACpD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACrD,MAAM,KAAK,GAAG,cAAc,CAAC;QAC3B,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,EAAE;KACX,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC;IAC5E,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ export interface PermissionAuditEntry {
2
+ timestamp: string;
3
+ agentName: string;
4
+ action: string;
5
+ details: Record<string, unknown>;
6
+ }
7
+ export declare function getDefaultPermissionAuditPath(projectDir: string): string;
8
+ export declare class PermissionAuditLog {
9
+ private readonly entries;
10
+ log(entry: Omit<PermissionAuditEntry, 'timestamp'> & {
11
+ timestamp?: string;
12
+ }): PermissionAuditEntry;
13
+ toJSON(): {
14
+ entries: PermissionAuditEntry[];
15
+ };
16
+ writeTo(filePath: string): Promise<void>;
17
+ summary(): string;
18
+ }
19
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/provisioner/audit.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAwCD,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IAEtD,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,oBAAoB;IAYlG,MAAM,IAAI;QAAE,OAAO,EAAE,oBAAoB,EAAE,CAAA;KAAE;IAWvC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,OAAO,IAAI,MAAM;CAoBlB"}
@@ -0,0 +1,74 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ const DEFAULT_PERMISSION_AUDIT_RELATIVE_PATH = path.join('.agent-relay', 'permission-audit.json');
4
+ function isPlainObject(value) {
5
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
6
+ }
7
+ function sanitizeJsonValue(value, key) {
8
+ if (key && key.toLowerCase().includes('token')) {
9
+ return '[redacted]';
10
+ }
11
+ if (value === null ||
12
+ typeof value === 'string' ||
13
+ typeof value === 'number' ||
14
+ typeof value === 'boolean') {
15
+ return value;
16
+ }
17
+ if (Array.isArray(value)) {
18
+ return value.map((item) => sanitizeJsonValue(item));
19
+ }
20
+ if (isPlainObject(value)) {
21
+ return Object.fromEntries(Object.entries(value).map(([entryKey, entryValue]) => [
22
+ entryKey,
23
+ sanitizeJsonValue(entryValue, entryKey),
24
+ ]));
25
+ }
26
+ return String(value);
27
+ }
28
+ export function getDefaultPermissionAuditPath(projectDir) {
29
+ return path.resolve(projectDir, DEFAULT_PERMISSION_AUDIT_RELATIVE_PATH);
30
+ }
31
+ export class PermissionAuditLog {
32
+ entries = [];
33
+ log(entry) {
34
+ const storedEntry = {
35
+ timestamp: entry.timestamp ?? new Date().toISOString(),
36
+ agentName: entry.agentName,
37
+ action: entry.action,
38
+ details: sanitizeJsonValue(entry.details),
39
+ };
40
+ this.entries.push(storedEntry);
41
+ return storedEntry;
42
+ }
43
+ toJSON() {
44
+ return {
45
+ entries: this.entries.map((entry) => ({
46
+ timestamp: entry.timestamp,
47
+ agentName: entry.agentName,
48
+ action: entry.action,
49
+ details: { ...entry.details },
50
+ })),
51
+ };
52
+ }
53
+ async writeTo(filePath) {
54
+ await mkdir(path.dirname(filePath), { recursive: true });
55
+ await writeFile(filePath, `${JSON.stringify(this.toJSON(), null, 2)}\n`, 'utf8');
56
+ }
57
+ summary() {
58
+ if (this.entries.length === 0) {
59
+ return 'Permission audit: 0 entries';
60
+ }
61
+ const actionCounts = new Map();
62
+ const agentNames = new Set();
63
+ for (const entry of this.entries) {
64
+ actionCounts.set(entry.action, (actionCounts.get(entry.action) ?? 0) + 1);
65
+ agentNames.add(entry.agentName);
66
+ }
67
+ const actionSummary = [...actionCounts.entries()]
68
+ .sort(([left], [right]) => left.localeCompare(right))
69
+ .map(([action, count]) => `${action}=${count}`)
70
+ .join(', ');
71
+ return `Permission audit: ${this.entries.length} entr${this.entries.length === 1 ? 'y' : 'ies'} across ${agentNames.size} agent${agentNames.size === 1 ? '' : 's'} (${actionSummary})`;
72
+ }
73
+ }
74
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/provisioner/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { AgentPreset } from '../workflows/types.js';
2
+ import type { AgentPermissions, CompiledAgentPermissions, CompileInput } from './types.js';
3
+ type FileAction = 'read' | 'write';
4
+ interface ExpandedPreset {
5
+ read: string[];
6
+ write: string[];
7
+ deny: string[];
8
+ }
9
+ export declare function defaultPermissionsForPreset(preset: AgentPreset | undefined): AgentPermissions;
10
+ export declare function expandPreset(preset: AgentPermissions['access'], options?: {
11
+ projectDir?: string;
12
+ workdir?: string;
13
+ }): ExpandedPreset;
14
+ export declare function globsToScopes(globs: string[], action: FileAction): string[];
15
+ export declare function compileAgentPermissions(input: CompileInput): CompiledAgentPermissions;
16
+ export declare function mergeAcl(compilations: readonly CompiledAgentPermissions[]): Record<string, string[]>;
17
+ export declare function resolveAgentPermissions(agentName: string, permissions: AgentPermissions | undefined, projectDir: string, workspace: string): CompiledAgentPermissions;
18
+ export declare function compileAgentScopes(input: CompileInput): CompiledAgentPermissions;
19
+ export declare function mergePermissionSources(dotfileScopes: string[], yamlScopes: string[], rawScopes: string[]): string[];
20
+ export declare const expandAccessPreset: typeof expandPreset;
21
+ export declare const globToScopes: (globs: string[], action: FileAction, _projectDir?: string) => string[];
22
+ export {};
23
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/provisioner/compiler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAE7G,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnC,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAqRD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,gBAAgB,CAY7F;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClC,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAClD,cAAc,CAqBhB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAO3E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,wBAAwB,CA4GrF;AAED,wBAAgB,QAAQ,CAAC,YAAY,EAAE,SAAS,wBAAwB,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAkBpG;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,gBAAgB,GAAG,SAAS,EACzC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,wBAAwB,CAO1B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,wBAAwB,CAEhF;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EAAE,EACvB,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM,EAAE,CAEV;AAED,eAAO,MAAM,kBAAkB,qBAAe,CAAC;AAC/C,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,EAAE,QAAQ,UAAU,EAAE,cAAc,MAAM,KAAG,MAAM,EACjE,CAAC"}
@@ -0,0 +1,355 @@
1
+ import ignore from 'ignore';
2
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
3
+ import path from 'node:path';
4
+ const SKIPPED_DIRS = new Set(['.git', '.relay', 'node_modules']);
5
+ function cleanPatterns(content) {
6
+ return content
7
+ .split(/\r?\n/u)
8
+ .map((line) => line.trim())
9
+ .filter((line) => line !== '' && !line.startsWith('#'));
10
+ }
11
+ function unique(values) {
12
+ const seen = new Set();
13
+ const result = [];
14
+ for (const value of values) {
15
+ const normalized = String(value ?? '').trim();
16
+ if (normalized === '' || seen.has(normalized)) {
17
+ continue;
18
+ }
19
+ seen.add(normalized);
20
+ result.push(normalized);
21
+ }
22
+ return result;
23
+ }
24
+ function normalizeRelativePath(value) {
25
+ return String(value ?? '')
26
+ .trim()
27
+ .replace(/\\/gu, '/')
28
+ .replace(/^\.\/+/u, '')
29
+ .replace(/^\/+/u, '')
30
+ .replace(/\/+/gu, '/');
31
+ }
32
+ function normalizeRelayPath(value) {
33
+ const normalized = normalizeRelativePath(value);
34
+ return normalized === '' ? '/' : `/${normalized}`;
35
+ }
36
+ function normalizeAclDir(relativeDir) {
37
+ const normalized = normalizeRelativePath(relativeDir);
38
+ return normalized === '' || normalized === '.' ? '/' : `/${normalized}`;
39
+ }
40
+ function readPatternFile(filePath) {
41
+ if (!existsSync(filePath)) {
42
+ return [];
43
+ }
44
+ return cleanPatterns(readFileSync(filePath, 'utf8'));
45
+ }
46
+ function createMatcher(patterns) {
47
+ const matcher = ignore();
48
+ if (patterns.length > 0) {
49
+ matcher.add([...patterns]);
50
+ }
51
+ return matcher;
52
+ }
53
+ function loadDotfileRules(projectDir, agentName) {
54
+ const resolvedProjectDir = path.resolve(projectDir);
55
+ return {
56
+ deny: unique([
57
+ ...readPatternFile(path.join(resolvedProjectDir, '.agentignore')),
58
+ ...readPatternFile(path.join(resolvedProjectDir, `.${agentName}.agentignore`)),
59
+ ]),
60
+ readonly: unique([
61
+ ...readPatternFile(path.join(resolvedProjectDir, '.agentreadonly')),
62
+ ...readPatternFile(path.join(resolvedProjectDir, `.${agentName}.agentreadonly`)),
63
+ ]),
64
+ };
65
+ }
66
+ function normalizeFileRules(permissions) {
67
+ return {
68
+ read: unique(permissions.files?.read ?? []),
69
+ write: unique(permissions.files?.write ?? []),
70
+ deny: unique(permissions.files?.deny ?? []),
71
+ };
72
+ }
73
+ function resolveScopedWorkdirPatterns(projectDir, workdir) {
74
+ if (!workdir) {
75
+ return undefined;
76
+ }
77
+ const resolvedProjectDir = path.resolve(projectDir);
78
+ const resolvedWorkdir = path.resolve(resolvedProjectDir, workdir);
79
+ const relativeWorkdir = normalizeRelativePath(path.relative(resolvedProjectDir, resolvedWorkdir));
80
+ if (relativeWorkdir === '' || relativeWorkdir === '.') {
81
+ return undefined;
82
+ }
83
+ if (relativeWorkdir === '..' || relativeWorkdir.startsWith('../')) {
84
+ return [];
85
+ }
86
+ return unique([relativeWorkdir, `${relativeWorkdir}/**`]);
87
+ }
88
+ function matchesAny(relativePath, matcher) {
89
+ return matcher.ignores(normalizeRelativePath(relativePath));
90
+ }
91
+ function walkProjectFiles(projectDir, currentDir = projectDir, files = []) {
92
+ const entries = readdirSync(currentDir, { withFileTypes: true }).sort((left, right) => left.name.localeCompare(right.name));
93
+ for (const entry of entries) {
94
+ if (entry.isDirectory() && SKIPPED_DIRS.has(entry.name)) {
95
+ continue;
96
+ }
97
+ const fullPath = path.join(currentDir, entry.name);
98
+ const relativePath = normalizeRelativePath(path.relative(projectDir, fullPath));
99
+ if (entry.isDirectory()) {
100
+ walkProjectFiles(projectDir, fullPath, files);
101
+ continue;
102
+ }
103
+ files.push(relativePath);
104
+ }
105
+ return files;
106
+ }
107
+ function buildSources(dotfileRules, preset, presetRules, fileRules, rawScopes, inherited) {
108
+ const sources = [];
109
+ if (inherited && (dotfileRules.deny.length > 0 || dotfileRules.readonly.length > 0)) {
110
+ sources.push({
111
+ type: 'dotfile',
112
+ label: 'dotfiles',
113
+ ruleCount: dotfileRules.deny.length + dotfileRules.readonly.length,
114
+ });
115
+ }
116
+ if (presetRules.read.length > 0 || presetRules.write.length > 0 || presetRules.deny.length > 0) {
117
+ sources.push({
118
+ type: 'preset',
119
+ label: `access: ${preset ?? 'readwrite'}`,
120
+ ruleCount: presetRules.read.length + presetRules.write.length + presetRules.deny.length,
121
+ });
122
+ }
123
+ if (fileRules.read.length > 0 || fileRules.write.length > 0 || fileRules.deny.length > 0) {
124
+ sources.push({
125
+ type: 'yaml',
126
+ label: 'permissions.files',
127
+ ruleCount: fileRules.read.length + fileRules.write.length + fileRules.deny.length,
128
+ });
129
+ }
130
+ if (rawScopes.length > 0) {
131
+ sources.push({
132
+ type: 'scope',
133
+ label: 'permissions.scopes',
134
+ ruleCount: rawScopes.length,
135
+ });
136
+ }
137
+ return sources;
138
+ }
139
+ function buildAcl(agentName, readonlyPaths, readwritePaths, deniedPaths) {
140
+ const aclMap = new Map();
141
+ const addRule = (relativePath, rule) => {
142
+ const aclDir = normalizeAclDir(path.posix.dirname(normalizeRelativePath(relativePath)));
143
+ const rules = aclMap.get(aclDir) ?? new Set();
144
+ rules.add(rule);
145
+ aclMap.set(aclDir, rules);
146
+ };
147
+ for (const relativePath of readonlyPaths) {
148
+ addRule(relativePath, 'read');
149
+ }
150
+ for (const relativePath of readwritePaths) {
151
+ addRule(relativePath, 'read');
152
+ addRule(relativePath, 'write');
153
+ }
154
+ const deniedDirs = new Map();
155
+ for (const relativePath of deniedPaths) {
156
+ const aclDir = normalizeAclDir(path.posix.dirname(normalizeRelativePath(relativePath)));
157
+ const summary = deniedDirs.get(aclDir) ?? { denied: 0, allowed: 0 };
158
+ summary.denied += 1;
159
+ deniedDirs.set(aclDir, summary);
160
+ }
161
+ for (const relativePath of [...readonlyPaths, ...readwritePaths]) {
162
+ const aclDir = normalizeAclDir(path.posix.dirname(normalizeRelativePath(relativePath)));
163
+ const summary = deniedDirs.get(aclDir) ?? { denied: 0, allowed: 0 };
164
+ summary.allowed += 1;
165
+ deniedDirs.set(aclDir, summary);
166
+ }
167
+ for (const [aclDir, summary] of deniedDirs.entries()) {
168
+ if (summary.denied > 0 && summary.allowed === 0) {
169
+ const rules = aclMap.get(aclDir) ?? new Set();
170
+ rules.add(`deny:agent:${agentName}`);
171
+ aclMap.set(aclDir, rules);
172
+ }
173
+ }
174
+ return Object.fromEntries([...aclMap.entries()]
175
+ .sort(([left], [right]) => left.localeCompare(right))
176
+ .map(([aclDir, rules]) => [aclDir, [...rules].sort()]));
177
+ }
178
+ function pathsToScopes(paths, action) {
179
+ return unique([...paths]
180
+ .map((relativePath) => normalizeRelativePath(relativePath))
181
+ .filter((relativePath) => relativePath !== '')
182
+ .sort((left, right) => left.localeCompare(right))
183
+ .map((relativePath) => `relayfile:fs:${action}:${normalizeRelayPath(relativePath)}`));
184
+ }
185
+ function buildReadonlyPatterns(presetRules, dotfileRules, fileRules) {
186
+ const presetReadonly = presetRules.write.length === 0 ? presetRules.read : [];
187
+ const yamlReadonly = fileRules.read.filter((pattern) => !fileRules.write.includes(pattern));
188
+ return unique([...dotfileRules.readonly, ...presetReadonly, ...yamlReadonly]);
189
+ }
190
+ function buildReadwritePatterns(presetRules, fileRules) {
191
+ return unique([...presetRules.write, ...fileRules.write]);
192
+ }
193
+ function buildDeniedPatterns(dotfileRules, fileRules) {
194
+ return unique([...dotfileRules.deny, ...fileRules.deny]);
195
+ }
196
+ export function defaultPermissionsForPreset(preset) {
197
+ switch (preset) {
198
+ case 'lead':
199
+ return { access: 'full' };
200
+ case 'reviewer':
201
+ case 'analyst':
202
+ return { access: 'readonly' };
203
+ case 'worker':
204
+ return { access: 'readwrite' };
205
+ default:
206
+ return {};
207
+ }
208
+ }
209
+ export function expandPreset(preset, options) {
210
+ const scopedWorkdirPatterns = preset === 'readwrite' && options?.projectDir
211
+ ? resolveScopedWorkdirPatterns(options.projectDir, options.workdir)
212
+ : undefined;
213
+ switch (preset ?? 'readwrite') {
214
+ case 'readonly':
215
+ return { read: ['**'], write: [], deny: [] };
216
+ case 'restricted':
217
+ return { read: [], write: [], deny: [] };
218
+ case 'full':
219
+ return { read: ['**'], write: ['**'], deny: [] };
220
+ case 'readwrite':
221
+ default:
222
+ return {
223
+ read: scopedWorkdirPatterns ?? ['**'],
224
+ write: scopedWorkdirPatterns ?? ['**'],
225
+ deny: [],
226
+ };
227
+ }
228
+ }
229
+ export function globsToScopes(globs, action) {
230
+ return unique(globs
231
+ .map((glob) => normalizeRelativePath(glob))
232
+ .filter((glob) => glob !== '')
233
+ .map((glob) => `relayfile:fs:${action}:${normalizeRelayPath(glob)}`));
234
+ }
235
+ export function compileAgentPermissions(input) {
236
+ const permissions = input.permissions ?? {};
237
+ const effectiveAccess = permissions.access ?? 'readwrite';
238
+ const inherited = effectiveAccess !== 'full' && permissions.inherit !== false;
239
+ const projectDir = path.resolve(input.projectDir);
240
+ const scopedInput = input;
241
+ const dotfileRules = inherited ? loadDotfileRules(projectDir, input.agentName) : { deny: [], readonly: [] };
242
+ const presetRules = expandPreset(effectiveAccess, {
243
+ projectDir,
244
+ workdir: scopedInput.workdir,
245
+ });
246
+ const fileRules = normalizeFileRules(permissions);
247
+ const rawScopes = unique(permissions.scopes ?? []);
248
+ const dotDenyMatcher = createMatcher(dotfileRules.deny);
249
+ const dotReadonlyMatcher = createMatcher(dotfileRules.readonly);
250
+ const presetReadMatcher = createMatcher(presetRules.read);
251
+ const presetWriteMatcher = createMatcher(presetRules.write);
252
+ const fileReadMatcher = createMatcher(fileRules.read);
253
+ const fileWriteMatcher = createMatcher(fileRules.write);
254
+ const fileDenyMatcher = createMatcher(fileRules.deny);
255
+ const readonlyPaths = [];
256
+ const readwritePaths = [];
257
+ const deniedPaths = [];
258
+ for (const relativePath of walkProjectFiles(projectDir)) {
259
+ const dotDenied = inherited && matchesAny(relativePath, dotDenyMatcher);
260
+ const dotReadonly = inherited && !dotDenied && matchesAny(relativePath, dotReadonlyMatcher);
261
+ const yamlRead = matchesAny(relativePath, fileReadMatcher);
262
+ const yamlWrite = matchesAny(relativePath, fileWriteMatcher);
263
+ const yamlDeny = matchesAny(relativePath, fileDenyMatcher);
264
+ const explicitYamlGrant = yamlRead || yamlWrite;
265
+ if (yamlDeny) {
266
+ deniedPaths.push(relativePath);
267
+ continue;
268
+ }
269
+ if (dotDenied && !explicitYamlGrant) {
270
+ deniedPaths.push(relativePath);
271
+ continue;
272
+ }
273
+ const presetRead = matchesAny(relativePath, presetReadMatcher);
274
+ const presetWrite = matchesAny(relativePath, presetWriteMatcher);
275
+ const canRead = explicitYamlGrant || presetRead || presetWrite;
276
+ let canWrite = yamlWrite || presetWrite;
277
+ if (dotReadonly && !yamlWrite) {
278
+ canWrite = false;
279
+ }
280
+ if (canWrite) {
281
+ readwritePaths.push(relativePath);
282
+ continue;
283
+ }
284
+ if (canRead) {
285
+ readonlyPaths.push(relativePath);
286
+ continue;
287
+ }
288
+ deniedPaths.push(relativePath);
289
+ }
290
+ readonlyPaths.sort((left, right) => left.localeCompare(right));
291
+ readwritePaths.sort((left, right) => left.localeCompare(right));
292
+ deniedPaths.sort((left, right) => left.localeCompare(right));
293
+ const readonlyPatterns = buildReadonlyPatterns(presetRules, dotfileRules, fileRules);
294
+ const readwritePatterns = buildReadwritePatterns(presetRules, fileRules);
295
+ const deniedPatterns = buildDeniedPatterns(dotfileRules, fileRules);
296
+ const scopes = mergePermissionSources([
297
+ ...pathsToScopes([...readonlyPaths, ...readwritePaths], 'read'),
298
+ ...pathsToScopes(readwritePaths, 'write'),
299
+ ], [], rawScopes);
300
+ return {
301
+ agentName: input.agentName,
302
+ workspace: input.workspace,
303
+ effectiveAccess,
304
+ inherited,
305
+ sources: buildSources(dotfileRules, effectiveAccess, presetRules, fileRules, rawScopes, inherited),
306
+ readonlyPatterns,
307
+ readwritePatterns,
308
+ deniedPatterns,
309
+ readonlyPaths,
310
+ readwritePaths,
311
+ deniedPaths,
312
+ scopes,
313
+ network: permissions.network,
314
+ exec: permissions.exec ? [...permissions.exec] : undefined,
315
+ acl: buildAcl(input.agentName, readonlyPaths, readwritePaths, deniedPaths),
316
+ summary: {
317
+ readonly: readonlyPaths.length,
318
+ readwrite: readwritePaths.length,
319
+ denied: deniedPaths.length,
320
+ customScopes: rawScopes.length,
321
+ },
322
+ };
323
+ }
324
+ export function mergeAcl(compilations) {
325
+ const merged = new Map();
326
+ for (const compilation of compilations) {
327
+ for (const [directory, rules] of Object.entries(compilation.acl)) {
328
+ const bucket = merged.get(directory) ?? new Set();
329
+ for (const rule of rules) {
330
+ bucket.add(rule);
331
+ }
332
+ merged.set(directory, bucket);
333
+ }
334
+ }
335
+ return Object.fromEntries([...merged.entries()]
336
+ .sort(([left], [right]) => left.localeCompare(right))
337
+ .map(([directory, rules]) => [directory, [...rules].sort()]));
338
+ }
339
+ export function resolveAgentPermissions(agentName, permissions, projectDir, workspace) {
340
+ return compileAgentPermissions({
341
+ agentName,
342
+ workspace,
343
+ projectDir,
344
+ permissions: permissions ?? {},
345
+ });
346
+ }
347
+ export function compileAgentScopes(input) {
348
+ return compileAgentPermissions(input);
349
+ }
350
+ export function mergePermissionSources(dotfileScopes, yamlScopes, rawScopes) {
351
+ return unique([...dotfileScopes, ...yamlScopes, ...rawScopes]);
352
+ }
353
+ export const expandAccessPreset = expandPreset;
354
+ export const globToScopes = (globs, action, _projectDir) => globsToScopes(globs, action);
355
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/provisioner/compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ProvisionResult, WorkflowProvisionConfig } from './types.js';
2
+ export * from './compiler.js';
3
+ export * from './mount.js';
4
+ export * from './seeder.js';
5
+ export * from './token.js';
6
+ export * from './types.js';
7
+ export * from './audit.js';
8
+ export declare function provisionWorkflowAgents(config: WorkflowProvisionConfig): Promise<ProvisionResult>;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provisioner/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAKV,eAAe,EAEf,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AA+F3B,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqNvG"}