pi-codex-auto-review 0.1.3 → 0.2.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 (128) hide show
  1. package/NOTICE +4 -2
  2. package/README.ko.md +85 -0
  3. package/README.md +51 -52
  4. package/dist/approval-commands.d.ts +3 -3
  5. package/dist/approval-commands.js +161 -34
  6. package/dist/approval-commands.js.map +1 -1
  7. package/dist/approval-settings.d.ts +1 -1
  8. package/dist/approval-settings.js +17 -10
  9. package/dist/approval-settings.js.map +1 -1
  10. package/dist/approvals.d.ts +10 -9
  11. package/dist/approvals.js +196 -75
  12. package/dist/approvals.js.map +1 -1
  13. package/dist/audit.d.ts +1 -1
  14. package/dist/audit.js +37 -13
  15. package/dist/audit.js.map +1 -1
  16. package/dist/cli.js +63 -34
  17. package/dist/cli.js.map +1 -1
  18. package/dist/context-files.d.ts +2 -2
  19. package/dist/context-files.js +40 -19
  20. package/dist/context-files.js.map +1 -1
  21. package/dist/contracts.d.ts +39 -39
  22. package/dist/contracts.js +117 -51
  23. package/dist/contracts.js.map +1 -1
  24. package/dist/index.d.ts +9 -9
  25. package/dist/index.js +147 -43
  26. package/dist/index.js.map +1 -1
  27. package/dist/pi-host.js +3 -3
  28. package/dist/pi-host.js.map +1 -1
  29. package/dist/policy/domains.js +17 -7
  30. package/dist/policy/domains.js.map +1 -1
  31. package/dist/policy/index.d.ts +7 -7
  32. package/dist/policy/index.js +382 -139
  33. package/dist/policy/index.js.map +1 -1
  34. package/dist/policy/paths.js +31 -18
  35. package/dist/policy/paths.js.map +1 -1
  36. package/dist/policy/rule-engine.d.ts +2 -0
  37. package/dist/policy/rule-engine.js +283 -0
  38. package/dist/policy/rule-engine.js.map +1 -0
  39. package/dist/policy/rule-types.d.ts +30 -0
  40. package/dist/policy/rule-types.js +2 -0
  41. package/dist/policy/rule-types.js.map +1 -0
  42. package/dist/policy/rules-sync.d.ts +1 -0
  43. package/dist/policy/rules-sync.js +14 -0
  44. package/dist/policy/rules-sync.js.map +1 -0
  45. package/dist/policy/rules-worker.d.ts +1 -0
  46. package/dist/policy/rules-worker.js +14 -0
  47. package/dist/policy/rules-worker.js.map +1 -0
  48. package/dist/policy/rules.d.ts +4 -31
  49. package/dist/policy/rules.js +126 -38
  50. package/dist/policy/rules.js.map +1 -1
  51. package/dist/policy/shell.js +70 -41
  52. package/dist/policy/shell.js.map +1 -1
  53. package/dist/policy/starlark/builtins.d.ts +6 -0
  54. package/dist/policy/starlark/builtins.js +764 -0
  55. package/dist/policy/starlark/builtins.js.map +1 -0
  56. package/dist/policy/starlark/evaluator.d.ts +18 -0
  57. package/dist/policy/starlark/evaluator.js +518 -0
  58. package/dist/policy/starlark/evaluator.js.map +1 -0
  59. package/dist/policy/starlark/lexer.d.ts +14 -0
  60. package/dist/policy/starlark/lexer.js +189 -0
  61. package/dist/policy/starlark/lexer.js.map +1 -0
  62. package/dist/policy/starlark/parser.d.ts +140 -0
  63. package/dist/policy/starlark/parser.js +508 -0
  64. package/dist/policy/starlark/parser.js.map +1 -0
  65. package/dist/policy/starlark/validation.d.ts +4 -0
  66. package/dist/policy/starlark/validation.js +183 -0
  67. package/dist/policy/starlark/validation.js.map +1 -0
  68. package/dist/policy/starlark/values.d.ts +46 -0
  69. package/dist/policy/starlark/values.js +363 -0
  70. package/dist/policy/starlark/values.js.map +1 -0
  71. package/dist/reports.d.ts +1 -1
  72. package/dist/reports.js +66 -30
  73. package/dist/reports.js.map +1 -1
  74. package/dist/review/context.d.ts +16 -3
  75. package/dist/review/context.js +254 -48
  76. package/dist/review/context.js.map +1 -1
  77. package/dist/review/investigation.d.ts +2 -2
  78. package/dist/review/investigation.js +57 -16
  79. package/dist/review/investigation.js.map +1 -1
  80. package/dist/review/lifecycle.d.ts +1 -1
  81. package/dist/review/lifecycle.js +72 -29
  82. package/dist/review/lifecycle.js.map +1 -1
  83. package/dist/review/policy.js +27 -5
  84. package/dist/review/policy.js.map +1 -1
  85. package/dist/review/upstream-policy.js +1 -1
  86. package/dist/review/upstream-policy.js.map +1 -1
  87. package/dist/review/user-input.d.ts +5 -0
  88. package/dist/review/user-input.js +54 -0
  89. package/dist/review/user-input.js.map +1 -0
  90. package/dist/reviewer.d.ts +16 -6
  91. package/dist/reviewer.js +258 -70
  92. package/dist/reviewer.js.map +1 -1
  93. package/dist/signals.js +24 -9
  94. package/dist/signals.js.map +1 -1
  95. package/dist/startup.d.ts +4 -4
  96. package/dist/startup.js +139 -41
  97. package/dist/startup.js.map +1 -1
  98. package/dist/tools/controller.d.ts +19 -13
  99. package/dist/tools/controller.js +460 -118
  100. package/dist/tools/controller.js.map +1 -1
  101. package/dist/tools/environment.d.ts +1 -0
  102. package/dist/tools/environment.js +5 -0
  103. package/dist/tools/environment.js.map +1 -1
  104. package/dist/tools/executor.d.ts +1 -1
  105. package/dist/tools/executor.js +45 -28
  106. package/dist/tools/executor.js.map +1 -1
  107. package/dist/tools/external.d.ts +9 -8
  108. package/dist/tools/external.js +22 -11
  109. package/dist/tools/external.js.map +1 -1
  110. package/dist/tools/mcp.d.ts +6 -6
  111. package/dist/tools/mcp.js +208 -79
  112. package/dist/tools/mcp.js.map +1 -1
  113. package/dist/tools/mutation-queue.js.map +1 -1
  114. package/docs/publishing.ko.md +114 -0
  115. package/docs/publishing.md +49 -47
  116. package/docs/security/dependencies.ko.md +54 -0
  117. package/docs/security/dependencies.md +27 -26
  118. package/docs/testing/auto-review-protection.ko.md +158 -0
  119. package/docs/testing/auto-review-protection.md +105 -97
  120. package/docs/usage.ko.md +242 -0
  121. package/docs/usage.md +127 -111
  122. package/package.json +106 -95
  123. package/dist/native/darwin-arm64/artifact.json +0 -5
  124. package/dist/native/darwin-arm64/pi-guard-execpolicy +0 -0
  125. package/dist/native/linux-x64/artifact.json +0 -5
  126. package/dist/native/linux-x64/pi-guard-execpolicy +0 -0
  127. package/native/execpolicy/LICENSE +0 -201
  128. package/native/execpolicy/NOTICE +0 -6
package/dist/tools/mcp.js CHANGED
@@ -1,45 +1,69 @@
1
- import { randomUUID } from 'node:crypto';
2
- import { join } from 'node:path';
3
- import { pathToFileURL } from 'node:url';
4
- import { createMcpExtension } from '@earendil-works/pi-coding-agent';
5
- import { canonicalJson, digest, GuardError } from '../contracts.js';
6
- import { getPiSDKEntryPath } from '../pi-host.js';
7
- import { externalInvocations } from './external.js';
1
+ import { randomUUID } from "node:crypto";
2
+ import { join } from "node:path";
3
+ import { pathToFileURL } from "node:url";
4
+ import { createMcpExtension, } from "@earendil-works/pi-coding-agent";
5
+ import { canonicalJson, digest, GuardError } from "../contracts.js";
6
+ import { getPiSDKEntryPath } from "../pi-host.js";
7
+ import { externalInvocations, } from "./external.js";
8
8
  export function guardedExternalExtension(input, controller) {
9
- const factory = typeof input.extension === 'function' ? input.extension : input.extension.factory;
10
- const guarded = api => factory(new Proxy(api, { get(target, key, receiver) {
11
- if (key === 'registerTool')
9
+ const factory = typeof input.extension === "function"
10
+ ? input.extension
11
+ : input.extension.factory;
12
+ const guarded = (api) => factory(new Proxy(api, {
13
+ get(target, key, receiver) {
14
+ if (key === "registerTool")
12
15
  return (definition) => target.registerTool(controller().wrapExternalTool(definition, () => input.identifyTool(definition)));
13
16
  return Reflect.get(target, key, receiver);
14
- } }));
15
- return typeof input.extension === 'function' ? guarded : { ...input.extension, factory: guarded };
17
+ },
18
+ }));
19
+ return typeof input.extension === "function"
20
+ ? guarded
21
+ : { ...input.extension, factory: guarded };
22
+ }
23
+ function record(value) {
24
+ return value && typeof value === "object" && !Array.isArray(value)
25
+ ? value
26
+ : {};
27
+ }
28
+ function optionalText(value) {
29
+ return typeof value === "string" && value.length ? value : undefined;
16
30
  }
17
- function record(value) { return value && typeof value === 'object' && !Array.isArray(value) ? value : {}; }
18
- function optionalText(value) { return typeof value === 'string' && value.length ? value : undefined; }
19
31
  function guardedTransport(base, server, registration, catalog, policies) {
20
32
  const pending = new Map();
21
33
  const active = new Map();
22
34
  let generation = 0;
23
35
  const captureTools = (tools) => {
24
36
  if (!Array.isArray(tools))
25
- throw new GuardError('INVALID_MCP_CATALOG', 'MCP tools/list did not return tools');
37
+ throw new GuardError("INVALID_MCP_CATALOG", "MCP tools/list did not return tools");
26
38
  for (const raw of tools) {
27
39
  const tool = record(raw), meta = record(tool._meta);
28
- if (typeof tool.name !== 'string' || !tool.name)
29
- throw new GuardError('INVALID_MCP_CATALOG', 'MCP tool has no identity');
40
+ if (typeof tool.name !== "string" || !tool.name)
41
+ throw new GuardError("INVALID_MCP_CATALOG", "MCP tool has no identity");
30
42
  const override = policies[`${server}/${tool.name}`];
43
+ const connectorId = optionalText(meta.connector_id);
44
+ const account = optionalText(meta.account);
45
+ const connectedAccountEmail = optionalText(meta.connected_account_email);
31
46
  const identity = {
32
- kind: 'mcp',
33
- server, tool: tool.name, registration: `${registration}:${generation}:${digest(JSON.parse(JSON.stringify(tool)))}`,
34
- ...(optionalText(meta.connector_id) ? { connectorId: meta.connector_id } : {}),
35
- ...(optionalText(meta.account) ? { account: meta.account } : {}),
36
- ...(override?.approvalMode ? { approvalMode: override.approvalMode } : {}),
47
+ kind: "mcp",
48
+ server,
49
+ tool: tool.name,
50
+ registration: `${registration}:${generation}:${digest(JSON.parse(JSON.stringify(tool)))}`,
51
+ ...(connectorId ? { connectorId } : {}),
52
+ ...(account ? { account } : {}),
53
+ ...(connectedAccountEmail ? { connectedAccountEmail } : {}),
54
+ ...(override?.approvalMode
55
+ ? { approvalMode: override.approvalMode }
56
+ : {}),
37
57
  annotations: record(tool.annotations),
38
58
  requiresUserInput: meta.codex_requires_user_input === true,
39
59
  isSensitiveAction: meta.codex_sensitive_action === true,
40
60
  requiresStrictReview: meta.codex_strict_auto_review === true,
41
61
  };
42
- catalog.set(`${server}\0${tool.name}`, { identity, label: `${server}/${tool.name}`, namespace: `mcp__${server}` });
62
+ catalog.set(`${server}\0${tool.name}`, {
63
+ identity,
64
+ label: `${server}/${tool.name}`,
65
+ namespace: `mcp__${server}`,
66
+ });
43
67
  }
44
68
  };
45
69
  const elicit = async (message) => {
@@ -48,141 +72,246 @@ function guardedTransport(base, server, registration, catalog, policies) {
48
72
  let isAllowed = false;
49
73
  // Arbitrary forms and URL authentication need an actual human-input UI. Never infer their fields.
50
74
  const schema = record(params.requestedSchema);
51
- const isApprovalForm = params.mode !== 'url' && schema.type === 'object' && Object.keys(record(schema.properties)).length === 0 && (!Array.isArray(schema.required) || schema.required.length === 0);
52
- if (invocation && !invocation.signal.aborted && isApprovalForm && meta.codex_approval_kind === 'mcp_tool_call' && typeof meta.tool_name === 'string' && meta.tool_params && typeof meta.tool_params === 'object' && !Array.isArray(meta.tool_params)) {
53
- const isMatchingOuter = meta.tool_name === invocation.identity.tool && (meta.connector_id ?? undefined) === invocation.identity.connectorId;
75
+ const isApprovalForm = params.mode !== "url" &&
76
+ schema.type === "object" &&
77
+ Object.keys(record(schema.properties)).length === 0 &&
78
+ (!Array.isArray(schema.required) || schema.required.length === 0);
79
+ if (invocation &&
80
+ callId !== undefined &&
81
+ !invocation.signal.aborted &&
82
+ isApprovalForm &&
83
+ meta.codex_approval_kind === "mcp_tool_call" &&
84
+ typeof meta.tool_name === "string" &&
85
+ meta.tool_params &&
86
+ typeof meta.tool_params === "object" &&
87
+ !Array.isArray(meta.tool_params)) {
88
+ const isMatchingOuter = meta.tool_name === invocation.identity.tool &&
89
+ (meta.connector_id ?? undefined) ===
90
+ invocation.identity.connectorId;
54
91
  if (isMatchingOuter) {
55
92
  const nested = {
56
- ...invocation.identity, tool: meta.tool_name,
57
- ...(typeof meta.connector_id === 'string' ? { connectorId: meta.connector_id } : {}),
93
+ ...invocation.identity,
94
+ tool: meta.tool_name,
95
+ ...(typeof meta.connector_id === "string"
96
+ ? { connectorId: meta.connector_id }
97
+ : {}),
58
98
  requiresUserInput: meta.codex_requires_user_input === true,
59
99
  isSensitiveAction: meta.codex_sensitive_action === true,
60
- requiresStrictReview: invocation.identity.requiresStrictReview === true || meta.codex_strict_auto_review === true,
100
+ requiresStrictReview: invocation.identity.requiresStrictReview === true ||
101
+ meta.codex_strict_auto_review === true,
61
102
  };
62
103
  try {
63
104
  await invocation.checkCurrent();
64
105
  isAllowed = await invocation.approveNested(nested, JSON.parse(canonicalJson(invocation.arguments)));
65
106
  await invocation.checkCurrent();
66
- isAllowed &&= active.get(callId) === invocation && !invocation.signal.aborted;
107
+ isAllowed &&=
108
+ active.get(callId) === invocation &&
109
+ !invocation.signal.aborted;
67
110
  }
68
111
  catch {
69
112
  isAllowed = false;
70
113
  }
71
114
  }
72
115
  }
73
- await base.send({ jsonrpc: '2.0', id: message.id, result: { action: isAllowed ? 'accept' : 'decline', ...(isAllowed ? { content: {} } : {}) } });
116
+ await base.send({
117
+ jsonrpc: "2.0",
118
+ id: message.id,
119
+ result: {
120
+ action: isAllowed ? "accept" : "decline",
121
+ ...(isAllowed ? { content: {} } : {}),
122
+ },
123
+ });
74
124
  };
75
- return new Proxy(base, { get(target, key) {
76
- if (key === 'send')
125
+ return new Proxy(base, {
126
+ get(target, key) {
127
+ if (key === "send")
77
128
  return async (message) => {
78
129
  const raw = message;
79
- if (raw.method && raw.id !== undefined) {
130
+ if ("method" in raw &&
131
+ raw.method &&
132
+ "id" in raw &&
133
+ raw.id !== undefined) {
134
+ const params = record(raw.params);
80
135
  const invocation = externalInvocations.getStore();
81
- if (raw.method === 'tools/call') {
82
- if (!invocation || invocation.identity.server !== server || invocation.identity.tool !== raw.params?.name)
83
- throw new GuardError('UNBOUND_MCP_CALL', 'MCP execution has no matching reviewed invocation');
136
+ if (raw.method === "tools/call") {
137
+ if (!invocation ||
138
+ invocation.identity.server !== server ||
139
+ invocation.identity.tool !== params.name)
140
+ throw new GuardError("UNBOUND_MCP_CALL", "MCP execution has no matching reviewed invocation");
84
141
  await invocation.checkCurrent();
85
142
  // Caller IDs can repeat; nested approvals must identify this exact in-flight invocation.
86
143
  const callId = randomUUID();
87
144
  active.set(callId, invocation);
88
145
  pending.set(raw.id, { method: raw.method, callId });
89
- return target.send({ ...raw, params: { ...raw.params, _meta: { ...record(raw.params?._meta), callId } } });
146
+ return target.send({
147
+ ...raw,
148
+ params: {
149
+ ...params,
150
+ _meta: {
151
+ ...record(params._meta),
152
+ callId,
153
+ },
154
+ },
155
+ });
90
156
  }
91
157
  pending.set(raw.id, { method: raw.method });
92
- if (raw.method === 'tools/list' && !raw.params?.cursor) {
158
+ if (raw.method === "tools/list" && !params.cursor) {
93
159
  generation++;
94
160
  for (const [name, item] of catalog)
95
161
  if (item.identity.server === server)
96
162
  catalog.delete(name);
97
163
  }
98
- if (raw.method === 'initialize')
99
- return target.send({ ...raw, params: { ...raw.params, capabilities: { ...record(raw.params?.capabilities), elicitation: { form: {} } } } });
164
+ if (raw.method === "initialize")
165
+ return target.send({
166
+ ...raw,
167
+ params: {
168
+ ...params,
169
+ capabilities: {
170
+ ...record(params.capabilities),
171
+ elicitation: { form: {} },
172
+ },
173
+ },
174
+ });
100
175
  }
101
176
  return target.send(message);
102
177
  };
103
- if (key === 'onMessage')
104
- return (listener) => target.onMessage(message => {
178
+ if (key === "onMessage")
179
+ return (listener) => target.onMessage((message) => {
105
180
  const raw = message;
106
- if (raw.method === 'elicitation/create' && raw.id !== undefined) {
181
+ if ("method" in raw &&
182
+ raw.method === "elicitation/create" &&
183
+ "id" in raw &&
184
+ raw.id !== undefined) {
107
185
  void elicit(raw).catch(() => { });
108
186
  return;
109
187
  }
110
- const request = !raw.method && raw.id !== undefined ? pending.get(raw.id) : undefined;
111
- if (request) {
112
- pending.delete(raw.id);
188
+ const id = "id" in raw ? raw.id : undefined;
189
+ const request = !("method" in raw && raw.method) && id !== undefined
190
+ ? pending.get(id)
191
+ : undefined;
192
+ if (request && id !== undefined) {
193
+ pending.delete(id);
113
194
  if (request.callId)
114
195
  active.delete(request.callId);
115
- if (request.method === 'tools/list' && raw.result) {
196
+ if (request.method === "tools/list" &&
197
+ "result" in raw &&
198
+ raw.result) {
116
199
  try {
117
- captureTools(raw.result.tools);
200
+ captureTools(record(raw.result).tools);
118
201
  }
119
202
  catch {
120
- listener({ jsonrpc: '2.0', id: raw.id, error: { code: -32603, message: 'Invalid MCP tool catalog' } });
203
+ listener({
204
+ jsonrpc: "2.0",
205
+ id,
206
+ error: {
207
+ code: -32603,
208
+ message: "Invalid MCP tool catalog",
209
+ },
210
+ });
121
211
  return;
122
212
  }
123
213
  }
124
214
  }
125
215
  listener(message);
126
216
  });
127
- if (key === 'close')
128
- return async () => { active.clear(); pending.clear(); await target.close(); };
217
+ if (key === "close")
218
+ return async () => {
219
+ active.clear();
220
+ pending.clear();
221
+ await target.close();
222
+ };
129
223
  const value = Reflect.get(target, key, target);
130
- return typeof value === 'function' ? value.bind(target) : value;
131
- } });
224
+ return typeof value === "function" ? value.bind(target) : value;
225
+ },
226
+ });
132
227
  }
133
228
  /**
134
229
  * Pi 0.99.1 exports the extension API but not its default transport/config helpers.
135
230
  * This small, version-qualified seam preserves the SDK's transport, config and OAuth implementation.
136
231
  */
137
232
  export async function createGuardedMcpExtension(agentDir, controller, options = {}, policies = {}) {
138
- const sdk = new URL('./', pathToFileURL(getPiSDKEntryPath()));
233
+ const sdk = new URL("./", pathToFileURL(getPiSDKEntryPath()));
139
234
  const [runtime, config, auth] = await Promise.all([
140
- import(new URL('extensions/mcp/runtime.js', sdk).href),
141
- import(new URL('extensions/mcp/config.js', sdk).href),
142
- import(new URL('core/auth-storage.js', sdk).href),
235
+ import(new URL("extensions/mcp/runtime.js", sdk).href),
236
+ import(new URL("extensions/mcp/config.js", sdk).href),
237
+ import(new URL("core/auth-storage.js", sdk).href),
143
238
  ]);
144
239
  const catalog = new Map(), registrations = new Map();
145
240
  const transportFactory = (entry, cwd, provider) => {
146
- const registration = digest({ name: entry.name, source: entry.source, config: JSON.parse(JSON.stringify(entry.config)), connection: randomUUID() });
241
+ const registration = digest({
242
+ name: entry.name,
243
+ source: entry.source,
244
+ config: JSON.parse(JSON.stringify(entry.config)),
245
+ connection: randomUUID(),
246
+ });
147
247
  registrations.set(entry.name, registration);
148
248
  return guardedTransport((options.createTransport ?? runtime.createDefaultTransport)(entry, cwd, provider), entry.name, registration, catalog, policies);
149
249
  };
150
250
  const mcpFactory = createMcpExtension({
151
- ...options, createTransport: transportFactory,
152
- loadConfig: options.loadConfig ?? (context => config.loadMcpConfig({ agentDir, cwd: context.cwd, projectTrusted: context.isProjectTrusted() })),
153
- credentials: options.credentials ?? new runtime.McpOAuthCredentialStore(new auth.FileAuthStorageBackend(join(agentDir, 'mcp-auth.json')), agentDir),
154
- logPath: options.logPath ?? join(agentDir, 'mcp.log'),
251
+ ...options,
252
+ createTransport: transportFactory,
253
+ loadConfig: options.loadConfig ??
254
+ ((context) => config.loadMcpConfig({
255
+ agentDir,
256
+ cwd: context.cwd,
257
+ projectTrusted: context.isProjectTrusted(),
258
+ })),
259
+ credentials: options.credentials ??
260
+ new runtime.McpOAuthCredentialStore(new auth.FileAuthStorageBackend(join(agentDir, "mcp-auth.json")), agentDir),
261
+ logPath: options.logPath ?? join(agentDir, "mcp.log"),
155
262
  });
156
- const factory = api => {
263
+ const factory = (api) => {
157
264
  let hasStarted = false;
158
265
  let shutdown;
159
- return mcpFactory(new Proxy(api, { get(target, key, receiver) {
160
- if (key === 'on')
266
+ return mcpFactory(new Proxy(api, {
267
+ get(target, key, receiver) {
268
+ if (key === "on")
161
269
  return (event, handler) => {
162
- if (event === 'session_shutdown') {
270
+ if (event === "session_shutdown") {
163
271
  shutdown = handler;
164
- return target.on('session_shutdown', async (...args) => { hasStarted = false; await handler(...args); });
272
+ return target.on("session_shutdown", async (...args) => {
273
+ hasStarted = false;
274
+ await handler(...args);
275
+ });
165
276
  }
166
- if (event === 'session_start')
167
- return target.on('session_start', async (event, context) => {
277
+ if (event === "session_start")
278
+ return target.on("session_start", async (event, context) => {
168
279
  // Pi rebinds modes with another session_start, without a preceding shutdown.
169
280
  if (hasStarted)
170
- await shutdown?.({ type: 'session_shutdown' }, context);
281
+ await shutdown?.({ type: "session_shutdown" }, context);
171
282
  hasStarted = true;
172
283
  await handler(event, context);
173
284
  });
174
- return Reflect.apply(target.on, target, [event, handler]);
285
+ return Reflect.apply(target.on, target, [
286
+ event,
287
+ handler,
288
+ ]);
175
289
  };
176
290
  return Reflect.get(target, key, receiver);
177
- } }));
291
+ },
292
+ }));
178
293
  };
179
- return guardedExternalExtension({ extension: { name: 'guarded-mcp', factory }, identifyTool: definition => {
180
- const entry = [...catalog.values()].find(item => item.label === definition.label && item.namespace === definition.namespace?.name);
294
+ return guardedExternalExtension({
295
+ extension: { name: "guarded-mcp", factory },
296
+ identifyTool: (definition) => {
297
+ const entry = [...catalog.values()].find((item) => item.label === definition.label &&
298
+ item.namespace === definition.namespace?.name);
181
299
  if (entry)
182
300
  return entry.identity;
183
- if (['list_mcp_resources', 'list_mcp_resource_templates', 'read_mcp_resource'].includes(definition.name))
184
- return { kind: 'mcp', server: 'mcp-resources', tool: definition.name, registration: digest([...registrations]), annotations: { readOnlyHint: true } };
185
- throw new GuardError('UNBOUND_MCP_TOOL', 'Tool does not belong to the registered MCP catalog');
186
- } }, controller);
301
+ if ([
302
+ "list_mcp_resources",
303
+ "list_mcp_resource_templates",
304
+ "read_mcp_resource",
305
+ ].includes(definition.name))
306
+ return {
307
+ kind: "mcp",
308
+ server: "mcp-resources",
309
+ tool: definition.name,
310
+ registration: digest([...registrations]),
311
+ annotations: { readOnlyHint: true },
312
+ };
313
+ throw new GuardError("UNBOUND_MCP_TOOL", "Tool does not belong to the registered MCP catalog");
314
+ },
315
+ }, controller);
187
316
  }
188
317
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-queue.js","sourceRoot":"","sources":["../../src/tools/mutation-queue.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,+EAA+E;AAC/E,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;AACpD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAI,IAAY,EAAE,OAAyB;IACxF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC;QAAC,OAAO,MAAM,IAAI,CAAC;IAAC,CAAC;YAAS,CAAC;QAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;AAC9F,CAAC"}
1
+ {"version":3,"file":"mutation-queue.js","sourceRoot":"","sources":["../../src/tools/mutation-queue.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,+EAA+E;AAC/E,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;AACpD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,IAAY,EACZ,OAAyB;IAEzB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC;QACD,OAAO,MAAM,IAAI,CAAC;IACtB,CAAC;YAAS,CAAC;QACP,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;AACL,CAAC"}
@@ -0,0 +1,114 @@
1
+ # npm 배포 안내
2
+
3
+ [English](publishing.md) | **한국어**
4
+
5
+ `pnpm release`에서 버전을 선택하고 커밋·태그·푸시를 확인하면 GitHub Actions가 JavaScript 패키지를 빌드·검증하고 npm에 게시합니다. 로컬 명령은 npm 자격 증명을 사용하지 않습니다. `0.2.0`은 JavaScript만 배포하는 이 절차를 사용하며, 게시된 `0.1.4`에는 이전 네이티브 실행 파일이 남아 있습니다.
6
+
7
+ ## 처음 한 번 설정
8
+
9
+ ### 소스와 의존성
10
+
11
+ 릴리스 설정, 스크립트, 패키지 수정 사항과 워크플로를 `master`에 커밋하고 원격 저장소에 반영합니다. 릴리스 브랜치는 `origin/master`를 추적해야 합니다. 수정된 파일이나 인덱스가 남아 있으면 릴리스 명령은 중단합니다.
12
+
13
+ Node.js 24.14.0과 pnpm 10을 사용할 수 있는 터미널에서 저장소 루트로 이동하고 의존성을 설치합니다.
14
+
15
+ ```sh
16
+ npm ci --ignore-scripts
17
+ ```
18
+
19
+ 의존성 설치와 CI 빌드는 기존 `package-lock.json`을 사용합니다. `pnpm`은 릴리스 스크립트의 실행 진입점으로 사용하며, `pnpm-lock.yaml`로 설치 방식을 바꾸지 않습니다. 현재 패키지는 샌드박스 의존성을 묶지 않고 Pi 호스트를 peer dependency로 사용합니다.
20
+
21
+ ### npm Trusted Publisher
22
+
23
+ `pi-codex-auto-review`의 npm **Settings → Trusted publishing**에서 GitHub Actions 연결을 추가합니다.
24
+
25
+ | 항목 | 입력 값 |
26
+ |---|---|
27
+ | Organization or user | `buYoung` |
28
+ | Repository | `pi-codex-auto-review` |
29
+ | Workflow filename | `npm-package.yml` |
30
+ | Environment name | 비워 둠 |
31
+ | Allowed actions | 직접 게시하는 `npm publish` 허용 |
32
+
33
+ 워크플로 이름은 파일명만 입력합니다. `.github/workflows/` 경로를 붙이지 않습니다. 기본 `npm stage publish` 권한만 허용하면 이 워크플로의 직접 게시가 실패합니다.
34
+
35
+ 게시 작업에는 `id-token: write` 권한이 설정되어 있고 npm 11.5.1 이상인지 확인합니다. GitHub-hosted runner가 발급하는 OIDC 인증을 사용하므로 `NPM_TOKEN`을 GitHub Secret에 추가하지 않습니다. npm의 연결은 저장 시 검증되지 않으므로 실제 첫 게시에서 확인해야 합니다. [npm Trusted Publishing 공식 안내](https://docs.npmjs.com/trusted-publishers/)
36
+
37
+ ## 버전 선택과 릴리스
38
+
39
+ `master`의 변경 사항이 커밋된 상태에서 실행합니다.
40
+
41
+ ```sh
42
+ pnpm release
43
+ ```
44
+
45
+ 1. 현재 버전과 구체적인 다음 버전을 보고 하나를 선택합니다. `0.1.1`에서 `0.1.2`를 출시할 때는 **patch**를 선택합니다. 로컬 버전 태그가 없으면 **현재 준비 버전 출시**도 선택할 수 있습니다.
46
+ 2. 커밋 여부를 확인하고 릴리스 커밋을 만듭니다. 현재 버전을 그대로 출시할 때는 출시 기록을 남기는 빈 커밋을 만듭니다.
47
+ 3. `v<버전>` 태그 생성 여부를 확인하고 주석 태그를 만듭니다.
48
+ 4. `master`와 해당 태그의 푸시 여부를 확인합니다. 승인하면 두 참조를 원자적으로 함께 푸시하고 Actions의 npm 게시를 시작합니다.
49
+
50
+ 각 확인의 기본값은 승인입니다. `n`이나 `Ctrl+C`를 입력하면 해당 작업과 이후 흐름을 중단합니다. `--ci`, 버전 인자나 자동 응답으로 질문을 건너뛰는 방식은 지원하지 않습니다.
51
+
52
+ 버전 선택은 자동으로 `0.1.2` 등을 적용하지 않습니다. `package.json`과 `package-lock.json`의 버전 변경은 release-it이 수행하며 npm 버전 수명 주기 스크립트는 실행하지 않습니다. 로컬에서는 패키지를 다시 빌드하거나 npm에 게시하지 않습니다.
53
+
54
+ 같은 npm 버전은 다시 게시할 수 없습니다. 현재 준비 버전이 이미 npm에 게시됐다면 더 큰 버전을 선택합니다. 시험 버전은 npm의 `next` 태그로, 정식 버전은 `latest` 태그로 게시합니다.
55
+
56
+ ## GitHub Actions가 수행하는 작업
57
+
58
+ `v*` 태그의 푸시가 `.github/workflows/npm-package.yml`을 시작합니다.
59
+
60
+ 1. `ubuntu-22.04`에서 npm 잠금 파일로 공식 개발 의존성을 설치합니다.
61
+ 2. 태그와 `package.json` 버전이 일치하고 태그 커밋이 `origin/master`에 포함되는지 확인한 뒤, TypeScript를 빌드하고 원본 결과 대조를 포함한 정책 검사를 실행합니다.
62
+ 3. `npm pack`의 `prepack`이 TypeScript를 컴파일하고 필수 파일과 JavaScript 규칙 작업 스레드를 검사합니다. 이전 샌드박스·네이티브 빌드 결과를 정리하고 바이너리·`.node`·`.wasm`·묶인 의존성이 압축 파일에 있으면 거부합니다.
63
+ 4. 검증한 `pi-codex-auto-review-<버전>.tgz`를 `npm-package` 결과물에 보관합니다.
64
+ 5. 별도 게시 작업이 같은 결과물을 내려받아 OIDC로 npm에 게시합니다.
65
+
66
+ **Actions → npm 배포 → Run workflow**로 수동 실행하면 압축 패키지 준비만 수행하며 게시 작업은 생략합니다. 태그 게시에는 같은 워크플로의 태그 실행을 사용합니다.
67
+
68
+ 하나의 JavaScript 압축 파일을 사용하며 규칙 엔진의 CPU·libc 의존성이 없습니다. 실제 Pi 사용 가능 여부·경로 처리·셸 지원은 호스트에 따라 다릅니다. 별도 운영체제 workflow는 Rust 설치 없이 Linux·Windows 실행 검사를 유지합니다. 실제 검증 범위는 [검증 안내](testing/auto-review-protection.ko.md)를 따릅니다.
69
+
70
+ ## 중단과 실패 후 확인
71
+
72
+ 로컬 명령은 종료 시 파일·인덱스 변경, 현재 HEAD, 로컬 태그 및 푸시 시도 상태를 출력합니다. 질문에서 거절하거나 취소해도 이미 변경한 버전·인덱스·커밋·태그는 보존합니다.
73
+
74
+ 푸시 실패 시 release-it은 원격 태그 정리를 시도할 수 있습니다. 출력만으로 원격 상태를 단정하지 말고 아래 결과를 확인합니다.
75
+
76
+ ```sh
77
+ git status --short
78
+ git log -1
79
+ git ls-remote origin refs/heads/master 'refs/tags/v*'
80
+ ```
81
+
82
+ 태그 푸시 후 Actions가 실패하면 해당 실행의 로그를 확인하고 실패한 작업을 다시 실행합니다. 실제 npm 게시가 성공했는지 먼저 확인합니다. 이미 게시된 버전을 되풀이하지 않고 새 변경에는 새 버전을 사용합니다.
83
+
84
+ ## 게시 결과와 Pi 설치 확인
85
+
86
+ `0.2.0` 게시 후 다음 명령으로 확인합니다.
87
+
88
+ ```sh
89
+ npm view pi-codex-auto-review@0.2.0 version --registry=https://registry.npmjs.org/
90
+ pi install npm:pi-codex-auto-review@0.2.0
91
+ pi list
92
+ pi
93
+ ```
94
+
95
+ 다음 릴리스부터는 선택한 버전으로 명령을 바꿉니다. `0.1.2`는 샌드박스를 포함한 이전 구조이며, `0.1.3`은 샌드박스를 제거하고 승인 설정 명령을 추가한 버전입니다. `0.1.4`는 영문 승인 설명, 모델 범위 연동, 사용자 재승인과 검토 문맥 전달·복원을 보완합니다. `0.2.0`은 Rust 규칙 엔진을 JavaScript로 컴파일하는 TypeScript 구현으로 교체하고 개발용 SDK 재포장을 제거합니다. 설치 후 `/approve`의 영문 설명과 `/approve-model`의 `/scoped-models` 범위 연동을 확인하고, 저장한 선택이 재시작 후 유지되는지 확인합니다. 설정 파일과 SDK 진입점은 [사용법](usage.ko.md)을 따릅니다.
96
+
97
+ ## 로컬에서 압축 패키지만 준비
98
+
99
+ 게시용 압축 파일을 직접 확인해야 할 때 사용합니다. 개발 의존성을 먼저 설치하며 별도 플랫폼 결과물은 필요하지 않습니다.
100
+
101
+ ```sh
102
+ npm run build
103
+ mkdir -p tmp/npm-release
104
+ npm pack --pack-destination tmp/npm-release
105
+ ```
106
+
107
+ `npm run build`는 JavaScript 모듈과 규칙 평가 진입점을 만듭니다. 게시 전 검사는 이 파일의 포함 여부를 확인하고 남아 있는 네이티브 결과물을 거부합니다. 정상 게시 준비에서 `--ignore-scripts`로 `prepack`을 생략하지 않습니다.
108
+
109
+ ## 관련 근거
110
+
111
+ - [release-it 21.0.1](https://github.com/release-it/release-it/tree/21.0.1)
112
+ - [npm Trusted Publishing](https://docs.npmjs.com/trusted-publishers/)
113
+ - [GitHub-hosted runner 종류](https://docs.github.com/en/actions/reference/runners/github-hosted-runners)
114
+ - [Pi 패키지 등록](https://github.com/earendil-works/pi/blob/v0.99.1/packages/coding-agent/docs/packages.md)