@clawmasons/mason 0.1.1 → 0.1.2

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 (153) hide show
  1. package/dist/acp/bridge.d.ts +92 -0
  2. package/dist/acp/bridge.d.ts.map +1 -0
  3. package/dist/acp/bridge.js +266 -0
  4. package/dist/acp/bridge.js.map +1 -0
  5. package/dist/acp/logger.d.ts +18 -0
  6. package/dist/acp/logger.d.ts.map +1 -0
  7. package/dist/acp/logger.js +35 -0
  8. package/dist/acp/logger.js.map +1 -0
  9. package/dist/acp/matcher.d.ts +60 -0
  10. package/dist/acp/matcher.d.ts.map +1 -0
  11. package/dist/acp/matcher.js +101 -0
  12. package/dist/acp/matcher.js.map +1 -0
  13. package/dist/acp/rewriter.d.ts +35 -0
  14. package/dist/acp/rewriter.d.ts.map +1 -0
  15. package/dist/acp/rewriter.js +46 -0
  16. package/dist/acp/rewriter.js.map +1 -0
  17. package/dist/acp/session.d.ts +202 -0
  18. package/dist/acp/session.d.ts.map +1 -0
  19. package/dist/acp/session.js +444 -0
  20. package/dist/acp/session.js.map +1 -0
  21. package/dist/acp/warnings.d.ts +24 -0
  22. package/dist/acp/warnings.d.ts.map +1 -0
  23. package/dist/acp/warnings.js +32 -0
  24. package/dist/acp/warnings.js.map +1 -0
  25. package/dist/cli/bin.d.ts +3 -0
  26. package/dist/cli/bin.d.ts.map +1 -0
  27. package/dist/cli/bin.js +4 -0
  28. package/dist/cli/bin.js.map +1 -0
  29. package/dist/cli/commands/build.d.ts +22 -0
  30. package/dist/cli/commands/build.d.ts.map +1 -0
  31. package/dist/cli/commands/build.js +107 -0
  32. package/dist/cli/commands/build.js.map +1 -0
  33. package/dist/cli/commands/docker-utils.d.ts +16 -0
  34. package/dist/cli/commands/docker-utils.d.ts.map +1 -0
  35. package/dist/cli/commands/docker-utils.js +54 -0
  36. package/dist/cli/commands/docker-utils.js.map +1 -0
  37. package/dist/cli/commands/index.d.ts +11 -0
  38. package/dist/cli/commands/index.d.ts.map +1 -0
  39. package/dist/cli/commands/index.js +89 -0
  40. package/dist/cli/commands/index.js.map +1 -0
  41. package/dist/cli/commands/list.d.ts +8 -0
  42. package/dist/cli/commands/list.d.ts.map +1 -0
  43. package/dist/cli/commands/list.js +60 -0
  44. package/dist/cli/commands/list.js.map +1 -0
  45. package/dist/cli/commands/package.d.ts +15 -0
  46. package/dist/cli/commands/package.d.ts.map +1 -0
  47. package/dist/cli/commands/package.js +241 -0
  48. package/dist/cli/commands/package.js.map +1 -0
  49. package/dist/cli/commands/permissions.d.ts +8 -0
  50. package/dist/cli/commands/permissions.d.ts.map +1 -0
  51. package/dist/cli/commands/permissions.js +60 -0
  52. package/dist/cli/commands/permissions.js.map +1 -0
  53. package/dist/cli/commands/proxy.d.ts +12 -0
  54. package/dist/cli/commands/proxy.d.ts.map +1 -0
  55. package/dist/cli/commands/proxy.js +253 -0
  56. package/dist/cli/commands/proxy.js.map +1 -0
  57. package/dist/cli/commands/run-agent.d.ts +149 -0
  58. package/dist/cli/commands/run-agent.d.ts.map +1 -0
  59. package/dist/cli/commands/run-agent.js +1072 -0
  60. package/dist/cli/commands/run-agent.js.map +1 -0
  61. package/dist/cli/commands/validate.d.ts +10 -0
  62. package/dist/cli/commands/validate.d.ts.map +1 -0
  63. package/dist/cli/commands/validate.js +138 -0
  64. package/dist/cli/commands/validate.js.map +1 -0
  65. package/dist/cli/index.d.ts +5 -0
  66. package/dist/cli/index.d.ts.map +1 -0
  67. package/dist/cli/index.js +18 -0
  68. package/dist/cli/index.js.map +1 -0
  69. package/dist/cli/proxy-entry.d.ts +8 -0
  70. package/dist/cli/proxy-entry.d.ts.map +1 -0
  71. package/dist/cli/proxy-entry.js +25 -0
  72. package/dist/cli/proxy-entry.js.map +1 -0
  73. package/dist/generator/agent-dockerfile.d.ts +38 -0
  74. package/dist/generator/agent-dockerfile.d.ts.map +1 -0
  75. package/dist/generator/agent-dockerfile.js +120 -0
  76. package/dist/generator/agent-dockerfile.js.map +1 -0
  77. package/dist/generator/credential-service-dockerfile.d.ts +14 -0
  78. package/dist/generator/credential-service-dockerfile.d.ts.map +1 -0
  79. package/dist/generator/credential-service-dockerfile.js +44 -0
  80. package/dist/generator/credential-service-dockerfile.js.map +1 -0
  81. package/dist/generator/index.d.ts +6 -0
  82. package/dist/generator/index.d.ts.map +1 -0
  83. package/dist/generator/index.js +6 -0
  84. package/dist/generator/index.js.map +1 -0
  85. package/dist/generator/mount-volumes.d.ts +30 -0
  86. package/dist/generator/mount-volumes.d.ts.map +1 -0
  87. package/dist/generator/mount-volumes.js +39 -0
  88. package/dist/generator/mount-volumes.js.map +1 -0
  89. package/dist/generator/proxy-dockerfile.d.ts +19 -0
  90. package/dist/generator/proxy-dockerfile.d.ts.map +1 -0
  91. package/dist/generator/proxy-dockerfile.js +59 -0
  92. package/dist/generator/proxy-dockerfile.js.map +1 -0
  93. package/dist/index.d.ts +8 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +8 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/materializer/common.d.ts +17 -0
  98. package/dist/materializer/common.d.ts.map +1 -0
  99. package/dist/materializer/common.js +37 -0
  100. package/dist/materializer/common.js.map +1 -0
  101. package/dist/materializer/docker-generator.d.ts +258 -0
  102. package/dist/materializer/docker-generator.d.ts.map +1 -0
  103. package/dist/materializer/docker-generator.js +529 -0
  104. package/dist/materializer/docker-generator.js.map +1 -0
  105. package/dist/materializer/index.d.ts +9 -0
  106. package/dist/materializer/index.d.ts.map +1 -0
  107. package/dist/materializer/index.js +7 -0
  108. package/dist/materializer/index.js.map +1 -0
  109. package/dist/materializer/proxy-dependencies.d.ts +43 -0
  110. package/dist/materializer/proxy-dependencies.d.ts.map +1 -0
  111. package/dist/materializer/proxy-dependencies.js +452 -0
  112. package/dist/materializer/proxy-dependencies.js.map +1 -0
  113. package/dist/materializer/role-materializer.d.ts +56 -0
  114. package/dist/materializer/role-materializer.d.ts.map +1 -0
  115. package/dist/materializer/role-materializer.js +119 -0
  116. package/dist/materializer/role-materializer.js.map +1 -0
  117. package/dist/materializer/types.d.ts +2 -0
  118. package/dist/materializer/types.d.ts.map +1 -0
  119. package/dist/materializer/types.js +2 -0
  120. package/dist/materializer/types.js.map +1 -0
  121. package/dist/resolver/discover.d.ts +7 -0
  122. package/dist/resolver/discover.d.ts.map +1 -0
  123. package/dist/resolver/discover.js +102 -0
  124. package/dist/resolver/discover.js.map +1 -0
  125. package/dist/resolver/errors.d.ts +35 -0
  126. package/dist/resolver/errors.d.ts.map +1 -0
  127. package/dist/resolver/errors.js +62 -0
  128. package/dist/resolver/errors.js.map +1 -0
  129. package/dist/resolver/index.d.ts +5 -0
  130. package/dist/resolver/index.d.ts.map +1 -0
  131. package/dist/resolver/index.js +4 -0
  132. package/dist/resolver/index.js.map +1 -0
  133. package/dist/resolver/resolve.d.ts +8 -0
  134. package/dist/resolver/resolve.d.ts.map +1 -0
  135. package/dist/resolver/resolve.js +177 -0
  136. package/dist/resolver/resolve.js.map +1 -0
  137. package/dist/runtime/gitignore.d.ts +16 -0
  138. package/dist/runtime/gitignore.d.ts.map +1 -0
  139. package/dist/runtime/gitignore.js +37 -0
  140. package/dist/runtime/gitignore.js.map +1 -0
  141. package/dist/validator/index.d.ts +3 -0
  142. package/dist/validator/index.d.ts.map +1 -0
  143. package/dist/validator/index.js +2 -0
  144. package/dist/validator/index.js.map +1 -0
  145. package/dist/validator/types.d.ts +48 -0
  146. package/dist/validator/types.d.ts.map +1 -0
  147. package/dist/validator/types.js +2 -0
  148. package/dist/validator/types.js.map +1 -0
  149. package/dist/validator/validate.d.ts +8 -0
  150. package/dist/validator/validate.d.ts.map +1 -0
  151. package/dist/validator/validate.js +217 -0
  152. package/dist/validator/validate.js.map +1 -0
  153. package/package.json +10 -9
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Extract all credential key-value pairs from matched servers' env fields.
3
+ *
4
+ * Merges all env records into a single flat record. If two servers provide
5
+ * the same key, the later one wins (iteration order of matched array).
6
+ *
7
+ * @param matched - The matched servers from the matcher
8
+ * @returns A flat record of all credential key-value pairs
9
+ */
10
+ export function extractCredentials(matched) {
11
+ const credentials = {};
12
+ for (const server of matched) {
13
+ if (server.config.env) {
14
+ for (const [key, value] of Object.entries(server.config.env)) {
15
+ credentials[key] = value;
16
+ }
17
+ }
18
+ }
19
+ return credentials;
20
+ }
21
+ /**
22
+ * Rewrite the ACP client's mcpServers config for the agent container.
23
+ *
24
+ * Replaces all matched MCP server entries with a single `chapter` entry
25
+ * pointing to the chapter proxy's streamable-http endpoint. Extracts
26
+ * credentials from matched servers' env fields for injection into the
27
+ * credential-service as session overrides.
28
+ *
29
+ * @param matchResult - The result from matchServers()
30
+ * @param proxyUrl - The chapter proxy URL inside the Docker network (e.g., "http://proxy:3000/mcp")
31
+ * @param sessionToken - The session authentication token
32
+ * @returns The rewritten mcpServers config and extracted credentials
33
+ */
34
+ export function rewriteMcpConfig(matchResult, proxyUrl, sessionToken) {
35
+ const extractedCredentials = extractCredentials(matchResult.matched);
36
+ const mcpServers = {
37
+ chapter: {
38
+ url: proxyUrl,
39
+ headers: {
40
+ Authorization: `Bearer ${sessionToken}`,
41
+ },
42
+ },
43
+ };
44
+ return { mcpServers, extractedCredentials };
45
+ }
46
+ //# sourceMappingURL=rewriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewriter.js","sourceRoot":"","sources":["../../src/acp/rewriter.ts"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAwB;IAExB,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7D,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAwB,EACxB,QAAgB,EAChB,YAAoB;IAEpB,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAErE,MAAM,UAAU,GAAoC;QAClD,OAAO,EAAE;YACP,GAAG,EAAE,QAAQ;YACb,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,YAAY,EAAE;aACxC;SACF;KACF,CAAC;IAEF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * ACP Session — Docker Session Orchestration for ACP
3
+ *
4
+ * Manages Docker Compose sessions for ACP mode. All services (proxy,
5
+ * agent) live in a single compose file so they share a Docker network.
6
+ * The credential service runs in-process on the host. The lifecycle is:
7
+ *
8
+ * 1. `startInfrastructure()` — `docker compose up -d` proxy
9
+ * 2. `startAgentProcess(cwd)` — `docker compose run` (foreground, piped stdio)
10
+ * or `startAgent(cwd)` — `docker compose run -d` (legacy detached mode)
11
+ * 3. `stopAgent()` — stops/kills the agent container
12
+ * 4. `stop()` — `docker compose down` everything
13
+ *
14
+ * PRD refs: REQ-005 (Docker Session Lifecycle, ACP Session CWD Support)
15
+ */
16
+ import * as child_process from "node:child_process";
17
+ import type { ChildProcess } from "node:child_process";
18
+ import { type RoleMount } from "../generator/mount-volumes.js";
19
+ import type { AcpLogger } from "./logger.js";
20
+ export interface AcpSessionConfig {
21
+ /** Workspace root directory */
22
+ projectDir: string;
23
+ /** Agent short name (e.g., "claude-code-agent") */
24
+ agent: string;
25
+ /** Role short name (e.g., "writer") */
26
+ role: string;
27
+ /** Internal proxy port (default: 3000) */
28
+ proxyPort?: number;
29
+ /** Session credential overrides extracted from ACP client mcpServers */
30
+ credentials?: Record<string, string>;
31
+ /** ACP client editor name (from ACP handshake, if available). */
32
+ acpClient?: string;
33
+ /** ACP command args appended to the agent entrypoint (e.g., ["--acp", "--port", "3002"]) */
34
+ acpCommand?: string[];
35
+ /** Declared credential keys for the agent (passed as AGENT_CREDENTIALS env var) */
36
+ credentialKeys?: string[];
37
+ /** Role-specific Docker build directory (e.g. {projectDir}/.mason/docker/{role-name}/) */
38
+ dockerBuildDir: string;
39
+ /** Shared Docker directory containing node_modules (e.g. {projectDir}/.mason/docker/) */
40
+ dockerDir: string;
41
+ }
42
+ export interface SessionInfo {
43
+ /** Unique session identifier */
44
+ sessionId: string;
45
+ /** Path to session directory */
46
+ sessionDir: string;
47
+ /** Path to generated docker-compose.yml */
48
+ composeFile: string;
49
+ /** Name of the proxy service in compose */
50
+ proxyServiceName: string;
51
+ /** Name of the agent service in compose */
52
+ agentServiceName: string;
53
+ }
54
+ export interface InfrastructureInfo {
55
+ /** Unique session identifier for infrastructure */
56
+ sessionId: string;
57
+ /** Path to infrastructure session directory */
58
+ sessionDir: string;
59
+ /** Path to infrastructure docker-compose.yml */
60
+ composeFile: string;
61
+ /** Name of the proxy service */
62
+ proxyServiceName: string;
63
+ /** Name of the agent service */
64
+ agentServiceName: string;
65
+ /** Generated proxy token (shared with agent sessions) */
66
+ proxyToken: string;
67
+ /** Generated credential proxy token (shared with agent sessions) */
68
+ credentialProxyToken: string;
69
+ /** Role-specific Docker build directory */
70
+ dockerBuildDir: string;
71
+ }
72
+ export interface AgentSessionInfo {
73
+ /** Unique agent session identifier */
74
+ sessionId: string;
75
+ /** Path to agent session directory (same compose file as infra) */
76
+ sessionDir: string;
77
+ /** Path to the shared docker-compose.yml */
78
+ composeFile: string;
79
+ /** Name of the agent service */
80
+ agentServiceName: string;
81
+ /** The project directory mounted into the container */
82
+ projectDir: string;
83
+ }
84
+ /**
85
+ * Dependencies for AcpSession, injectable for testing.
86
+ */
87
+ export interface AcpSessionDeps {
88
+ /** Override the compose command executor (for testing). */
89
+ execComposeFn?: (composeFile: string, args: string[], opts?: {
90
+ interactive?: boolean;
91
+ }) => Promise<number>;
92
+ /** Override session ID generation (for testing). */
93
+ generateSessionIdFn?: () => string;
94
+ /** Override docker compose check (for testing). */
95
+ checkDockerComposeFn?: () => void;
96
+ /** Override child_process.spawn (for testing startAgentProcess). */
97
+ spawnFn?: (command: string, args: string[], options: child_process.SpawnOptions) => ChildProcess;
98
+ /** Optional logger for diagnostics. */
99
+ logger?: AcpLogger;
100
+ }
101
+ /**
102
+ * Generate a docker-compose.yml with proxy and agent services.
103
+ * The credential service runs in-process on the host, not in Docker.
104
+ *
105
+ * The agent service is defined with `profiles: ["agent"]` so that
106
+ * `docker compose up -d` only starts the proxy.
107
+ * The agent is started later via `docker compose run`.
108
+ *
109
+ * Docker build layout (project-local):
110
+ * .mason/docker/ ← dockerDir (shared, has node_modules)
111
+ * {role-name}/ ← dockerBuildDir
112
+ * mcp-proxy/Dockerfile
113
+ * {agent-type}/Dockerfile
114
+ */
115
+ export declare function generateAcpComposeYml(opts: {
116
+ dockerBuildDir: string;
117
+ dockerDir: string;
118
+ projectDir?: string;
119
+ agent: string;
120
+ role: string;
121
+ logsDir: string;
122
+ proxyToken: string;
123
+ credentialProxyToken: string;
124
+ proxyPort?: number;
125
+ acpClient?: string;
126
+ acpCommand?: string[];
127
+ roleMounts?: RoleMount[];
128
+ credentialKeys?: string[];
129
+ }): string;
130
+ export declare class AcpSession {
131
+ private readonly config;
132
+ private readonly deps;
133
+ private running;
134
+ private sessionInfo;
135
+ private infraInfo;
136
+ private infraRunning;
137
+ private agentInfo;
138
+ private agentRunning;
139
+ private agentChild;
140
+ constructor(config: AcpSessionConfig, deps?: AcpSessionDeps);
141
+ /**
142
+ * Start the ACP Docker session (legacy all-at-once mode).
143
+ * Starts all services including the agent in a single compose up.
144
+ */
145
+ start(): Promise<SessionInfo>;
146
+ /**
147
+ * Start infrastructure services only (proxy).
148
+ * These are long-lived and shared across agent sessions.
149
+ * The agent service is in the same compose file but behind a profile,
150
+ * so `up -d` skips it.
151
+ */
152
+ startInfrastructure(): Promise<InfrastructureInfo>;
153
+ /**
154
+ * Start an agent container for a specific project directory.
155
+ * Uses `docker compose run -d` on the agent service from the
156
+ * same compose file, so it shares the network with infra.
157
+ *
158
+ * @param projectDir The project directory to mount into the container.
159
+ */
160
+ startAgent(projectDir: string): Promise<AgentSessionInfo>;
161
+ /**
162
+ * Start an agent container as a foreground child process with piped stdio.
163
+ *
164
+ * Unlike `startAgent()` (which uses `docker compose run -d`), this method
165
+ * spawns `docker compose run` without `-d` so the child process's
166
+ * stdin/stdout can be wrapped with `ndJsonStream()` for direct ACP
167
+ * communication. No port mapping or container ID discovery is needed.
168
+ *
169
+ * @param projectDir The project directory to mount into the container.
170
+ * @returns The spawned child process and agent session info.
171
+ */
172
+ startAgentProcess(projectDir: string): Promise<{
173
+ child: ChildProcess;
174
+ agentInfo: AgentSessionInfo;
175
+ }>;
176
+ /**
177
+ * Stop only the agent container. Infrastructure remains running.
178
+ * Idempotent — calling when agent is not running is a no-op.
179
+ *
180
+ * If a child process exists (from `startAgentProcess()`), it is killed.
181
+ * Otherwise, the agent service is stopped via compose commands.
182
+ */
183
+ stopAgent(): Promise<void>;
184
+ /**
185
+ * Stop all services (infrastructure + agent).
186
+ * Idempotent — calling stop when not running is a no-op.
187
+ */
188
+ stop(): Promise<void>;
189
+ /**
190
+ * Check if the session is currently running (legacy mode).
191
+ */
192
+ isRunning(): boolean;
193
+ /**
194
+ * Check if infrastructure is currently running.
195
+ */
196
+ isInfrastructureRunning(): boolean;
197
+ /**
198
+ * Check if an agent is currently running.
199
+ */
200
+ isAgentRunning(): boolean;
201
+ }
202
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/acp/session.ts"],"names":[],"mappings":"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"}