@preapexis/piexis 0.2.2 → 0.2.5

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 (149) hide show
  1. package/README.md +85 -131
  2. package/apps/server/src/index.ts +97 -0
  3. package/apps/server/src/session-manager.ts +95 -0
  4. package/apps/server/src/workspace.ts +39 -0
  5. package/{tsconfig.json → apps/server/tsconfig.json} +3 -3
  6. package/apps/web/dist/assets/index-D4n3_lAw.js +10 -0
  7. package/apps/web/dist/assets/index-igiK0FPY.css +1 -0
  8. package/apps/web/dist/index.html +3 -0
  9. package/bin/piexis-web.mjs +24 -0
  10. package/extensions/agents.ts +205 -0
  11. package/extensions/ask-question.ts +54 -95
  12. package/extensions/recommended-tools.ts +62 -0
  13. package/extensions/ui.ts +204 -58
  14. package/extensions/webui.ts +45 -0
  15. package/lib/agent-config.ts +55 -0
  16. package/lib/agents.ts +208 -0
  17. package/lib/question-model.ts +98 -0
  18. package/lib/question-ui.ts +214 -0
  19. package/lib/recommended-tools.ts +119 -0
  20. package/lib/subagent-runner.ts +146 -0
  21. package/lib/ui-tips.json +41 -0
  22. package/package.json +41 -14
  23. package/packages/pi-integration/src/rpc-client.ts +99 -0
  24. package/packages/shared/src/index.ts +27 -0
  25. package/prompts/init.md +10 -2
  26. package/prompts/summary.md +7 -6
  27. package/schemas/agent.schema.json +48 -0
  28. package/skills/{claude-api/LICENSE.txt → caveman/LICENSE} +2 -2
  29. package/skills/caveman/LICENSE-MIT +21 -0
  30. package/skills/caveman/NOTICE +10 -0
  31. package/skills/caveman/SKILL.md +89 -0
  32. package/skills/find-skills/SKILL.md +141 -0
  33. package/skills/ponytail/LICENSE +21 -0
  34. package/skills/ponytail/NOTICE +9 -0
  35. package/skills/ponytail/SKILL.md +52 -0
  36. package/themes/midnight.json +81 -0
  37. package/.github/workflows/publish.yml +0 -35
  38. package/AGENTS.md +0 -58
  39. package/eval/README.md +0 -72
  40. package/eval/permission-cases.json +0 -28
  41. package/eval/permissions.mjs +0 -103
  42. package/extensions/background-tasks.ts +0 -433
  43. package/extensions/background-worker.ts +0 -50
  44. package/extensions/glob.ts +0 -32
  45. package/extensions/mode.ts +0 -397
  46. package/lib/bash-approvals.ts +0 -113
  47. package/lib/bash-policy.ts +0 -164
  48. package/lib/mode-policy.ts +0 -174
  49. package/lib/path-policy.ts +0 -182
  50. package/lib/permission-classifier.ts +0 -128
  51. package/lib/permission-config.ts +0 -91
  52. package/lib/permission-denials.ts +0 -32
  53. package/lib/permission-intent.ts +0 -128
  54. package/lib/permission-taxonomy.ts +0 -15
  55. package/lib/task-broker.ts +0 -65
  56. package/lib/task-checkout.ts +0 -39
  57. package/lib/task-git.ts +0 -44
  58. package/lib/task-patch.ts +0 -106
  59. package/lib/task-permissions.ts +0 -51
  60. package/lib/task-report.ts +0 -62
  61. package/lib/task-worktree-policy.ts +0 -56
  62. package/scripts/release.mjs +0 -32
  63. package/skills/claude-api/SKILL.md +0 -572
  64. package/skills/claude-api/csharp/claude-api/README.md +0 -362
  65. package/skills/claude-api/csharp/claude-api/batches.md +0 -14
  66. package/skills/claude-api/csharp/claude-api/files-api.md +0 -25
  67. package/skills/claude-api/csharp/claude-api/streaming.md +0 -28
  68. package/skills/claude-api/csharp/claude-api/tool-use.md +0 -164
  69. package/skills/claude-api/curl/examples.md +0 -256
  70. package/skills/claude-api/curl/managed-agents.md +0 -371
  71. package/skills/claude-api/go/claude-api/README.md +0 -188
  72. package/skills/claude-api/go/claude-api/files-api.md +0 -23
  73. package/skills/claude-api/go/claude-api/streaming.md +0 -43
  74. package/skills/claude-api/go/claude-api/tool-use.md +0 -220
  75. package/skills/claude-api/go/managed-agents/README.md +0 -564
  76. package/skills/claude-api/java/claude-api/README.md +0 -238
  77. package/skills/claude-api/java/claude-api/files-api.md +0 -27
  78. package/skills/claude-api/java/claude-api/streaming.md +0 -24
  79. package/skills/claude-api/java/claude-api/tool-use.md +0 -228
  80. package/skills/claude-api/java/managed-agents/README.md +0 -443
  81. package/skills/claude-api/php/claude-api/README.md +0 -174
  82. package/skills/claude-api/php/claude-api/batches.md +0 -15
  83. package/skills/claude-api/php/claude-api/files-api.md +0 -13
  84. package/skills/claude-api/php/claude-api/streaming.md +0 -27
  85. package/skills/claude-api/php/claude-api/tool-use.md +0 -253
  86. package/skills/claude-api/php/managed-agents/README.md +0 -443
  87. package/skills/claude-api/python/claude-api/README.md +0 -565
  88. package/skills/claude-api/python/claude-api/batches.md +0 -198
  89. package/skills/claude-api/python/claude-api/files-api.md +0 -170
  90. package/skills/claude-api/python/claude-api/sdk-upgrade.md +0 -286
  91. package/skills/claude-api/python/claude-api/streaming.md +0 -179
  92. package/skills/claude-api/python/claude-api/tool-use.md +0 -627
  93. package/skills/claude-api/python/managed-agents/README.md +0 -335
  94. package/skills/claude-api/ruby/claude-api/README.md +0 -134
  95. package/skills/claude-api/ruby/claude-api/streaming.md +0 -16
  96. package/skills/claude-api/ruby/claude-api/tool-use.md +0 -41
  97. package/skills/claude-api/ruby/managed-agents/README.md +0 -394
  98. package/skills/claude-api/shared/admin-api.md +0 -179
  99. package/skills/claude-api/shared/agent-design.md +0 -101
  100. package/skills/claude-api/shared/anthropic-cli.md +0 -269
  101. package/skills/claude-api/shared/claude-platform-on-aws.md +0 -59
  102. package/skills/claude-api/shared/cost-optimization.md +0 -233
  103. package/skills/claude-api/shared/error-codes.md +0 -262
  104. package/skills/claude-api/shared/live-sources.md +0 -166
  105. package/skills/claude-api/shared/managed-agents-api-reference.md +0 -455
  106. package/skills/claude-api/shared/managed-agents-client-patterns.md +0 -220
  107. package/skills/claude-api/shared/managed-agents-core.md +0 -359
  108. package/skills/claude-api/shared/managed-agents-environments.md +0 -226
  109. package/skills/claude-api/shared/managed-agents-events.md +0 -290
  110. package/skills/claude-api/shared/managed-agents-memory.md +0 -201
  111. package/skills/claude-api/shared/managed-agents-multiagent.md +0 -260
  112. package/skills/claude-api/shared/managed-agents-onboarding.md +0 -82
  113. package/skills/claude-api/shared/managed-agents-outcomes.md +0 -108
  114. package/skills/claude-api/shared/managed-agents-overview.md +0 -77
  115. package/skills/claude-api/shared/managed-agents-scheduled-deployments.md +0 -156
  116. package/skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +0 -282
  117. package/skills/claude-api/shared/managed-agents-tools.md +0 -504
  118. package/skills/claude-api/shared/managed-agents-webhooks.md +0 -143
  119. package/skills/claude-api/shared/model-migration.md +0 -1872
  120. package/skills/claude-api/shared/models.md +0 -142
  121. package/skills/claude-api/shared/platform-availability.md +0 -53
  122. package/skills/claude-api/shared/prompt-audit.md +0 -223
  123. package/skills/claude-api/shared/prompt-caching.md +0 -292
  124. package/skills/claude-api/shared/token-counting.md +0 -56
  125. package/skills/claude-api/shared/tool-use-concepts.md +0 -526
  126. package/skills/claude-api/typescript/claude-api/README.md +0 -405
  127. package/skills/claude-api/typescript/claude-api/batches.md +0 -106
  128. package/skills/claude-api/typescript/claude-api/files-api.md +0 -98
  129. package/skills/claude-api/typescript/claude-api/streaming.md +0 -178
  130. package/skills/claude-api/typescript/claude-api/tool-use.md +0 -586
  131. package/skills/claude-api/typescript/managed-agents/README.md +0 -359
  132. package/skills-lock.json +0 -359
  133. package/tests/auto-permissions.test.mjs +0 -315
  134. package/tests/background-tasks.test.mjs +0 -27
  135. package/tests/background-worker.test.mjs +0 -60
  136. package/tests/bash-permissions.test.mjs +0 -276
  137. package/tests/glob.test.mjs +0 -31
  138. package/tests/mode.test.mjs +0 -62
  139. package/tests/permission-evaluation.test.mjs +0 -70
  140. package/tests/permission-foundation.test.mjs +0 -194
  141. package/tests/permission-policy.test.mjs +0 -158
  142. package/tests/runtime/README.md +0 -51
  143. package/tests/runtime/harness.mjs +0 -190
  144. package/tests/runtime/permissions.test.mjs +0 -192
  145. package/tests/runtime/tui.test.mjs +0 -60
  146. package/tests/skills-routing.test.mjs +0 -51
  147. package/tests/task-integration.test.mjs +0 -324
  148. package/tests/task-permissions.test.mjs +0 -178
  149. package/tests/task-worktree-policy.test.mjs +0 -53
@@ -1,359 +0,0 @@
1
- # Managed Agents - TypeScript
2
-
3
- > **Bindings not shown here:** This README covers the most common managed-agents flows for TypeScript. If you need a class, method, namespace, field, or behavior that isn't shown, WebFetch the TypeScript SDK repo **or the relevant docs page** from `shared/live-sources.md` rather than guess. Do not extrapolate from cURL shapes or another language's SDK.
4
-
5
- > **Agents are persistent - create once, reference by ID.** Store the agent ID returned by `agents.create` and pass it to every subsequent `sessions.create`; do not call `agents.create` in the request path. **Recommended:** define agents and environments as version-controlled YAML applied with the `ant` CLI - see `shared/anthropic-cli.md` (its live-docs URL is in `shared/live-sources.md`). The CLI owns the control plane (create/update); your code owns the data plane (sessions with the stored ID). The examples below show in-code creation for when you must provision programmatically; in production the create call belongs in setup, not in the request path.
6
-
7
- ## Installation
8
-
9
- ```bash
10
- npm install @anthropic-ai/sdk
11
- ```
12
-
13
- ## Client Initialization
14
-
15
- ```typescript
16
- import Anthropic from "@anthropic-ai/sdk";
17
-
18
- // Default - resolves credentials from the environment:
19
- // ANTHROPIC_API_KEY, or ANTHROPIC_AUTH_TOKEN, or an `ant auth login` profile.
20
- // Prefer this for local dev; don't hardcode a key.
21
- const client = new Anthropic();
22
-
23
- // Explicit API key (only when you must inject a specific key)
24
- const client = new Anthropic({ apiKey: "your-api-key" });
25
- ```
26
-
27
- ---
28
-
29
- ## Create an Environment
30
-
31
- ```typescript
32
- const environment = await client.beta.environments.create(
33
- {
34
- name: "my-dev-env",
35
- config: {
36
- type: "cloud",
37
- networking: { type: "unrestricted" },
38
- },
39
- },
40
- );
41
- console.log(environment.id); // env_...
42
- ```
43
-
44
- ---
45
-
46
- ## Create an Agent (required first step)
47
-
48
- > Warning: **There is no inline agent config.** `model`/`system`/`tools` live on the agent object, not the session. Always start with `agents.create()` - the session only takes `agent: { type: "agent", id: agent.id }`.
49
-
50
- ### Minimal
51
-
52
- ```typescript
53
- // 1. Create the agent (reusable, versioned)
54
- const agent = await client.beta.agents.create(
55
- {
56
- name: "Coding Assistant",
57
- model: "claude-opus-5",
58
- tools: [{ type: "agent_toolset_20260401", default_config: { enabled: true } }],
59
- },
60
- );
61
-
62
- // 2. Start a session
63
- const session = await client.beta.sessions.create(
64
- {
65
- agent: { type: "agent", id: agent.id, version: agent.version },
66
- environment_id: environment.id,
67
- },
68
- );
69
- console.log(session.id, session.status);
70
- console.log(`Trace: https://platform.claude.com/workspaces/default/sessions/${session.id}`); // swap 'default' for your workspace ID if the API key is not in the Default workspace
71
- ```
72
-
73
- ### With system prompt and custom tools
74
-
75
- ```typescript
76
- const agent = await client.beta.agents.create(
77
- {
78
- name: "Code Reviewer",
79
- model: "claude-opus-5",
80
- system: "You are a senior code reviewer.",
81
- tools: [
82
- { type: "agent_toolset_20260401", default_config: { enabled: true } },
83
- {
84
- type: "custom",
85
- name: "run_tests",
86
- description: "Run the test suite",
87
- input_schema: {
88
- type: "object",
89
- properties: {
90
- test_path: { type: "string", description: "Path to test file" },
91
- },
92
- required: ["test_path"],
93
- },
94
- },
95
- ],
96
- },
97
- );
98
-
99
- const session = await client.beta.sessions.create(
100
- {
101
- agent: { type: "agent", id: agent.id, version: agent.version },
102
- environment_id: environment.id,
103
- title: "Code review session",
104
- resources: [
105
- {
106
- type: "github_repository",
107
- url: "https://github.com/owner/repo",
108
- mount_path: "/workspace/repo",
109
- authorization_token: process.env.GITHUB_TOKEN,
110
- branch: "main",
111
- },
112
- ],
113
- },
114
- );
115
- ```
116
-
117
- ---
118
-
119
- ## Send a User Message
120
-
121
- ```typescript
122
- await client.beta.sessions.events.send(
123
- session.id,
124
- {
125
- events: [
126
- {
127
- type: "user.message",
128
- content: [{ type: "text", text: "Review the auth module" }],
129
- },
130
- ],
131
- },
132
- );
133
- ```
134
-
135
- > Tip: **Stream-first:** Open the stream *before* (or concurrently with) sending the message. The stream only delivers events that occur after it opens - stream-after-send means early events arrive buffered in one batch. See [Steering Patterns](../../shared/managed-agents-events.md#steering-patterns).
136
-
137
- ---
138
-
139
- ## Stream Events (SSE)
140
-
141
- ```typescript
142
- // Stream-first: open stream and send concurrently
143
- const [events] = await Promise.all([
144
- collectStream(session.id),
145
- client.beta.sessions.events.send(
146
- session.id,
147
- { events: [{ type: "user.message", content: [{ type: "text", text: "..." }] }] },
148
- ),
149
- ]);
150
-
151
- // Standalone stream iteration:
152
- const stream = await client.beta.sessions.events.stream(
153
- session.id,
154
- );
155
-
156
- for await (const event of stream) {
157
- switch (event.type) {
158
- case "agent.message":
159
- for (const block of event.content) {
160
- if (block.type === "text") {
161
- process.stdout.write(block.text);
162
- }
163
- }
164
- break;
165
- case "agent.custom_tool_use":
166
- // Custom tool invocation - session is now idle
167
- console.log(`\nCustom tool call: ${event.name}`);
168
- console.log(`Input: ${JSON.stringify(event.input)}`);
169
- break;
170
- case "session.status_idle":
171
- console.log("\n--- Agent idle ---");
172
- break;
173
- case "session.status_terminated":
174
- console.log("\n--- Session terminated ---");
175
- break;
176
- }
177
- }
178
- ```
179
-
180
- ---
181
-
182
- ## Provide Custom Tool Result
183
-
184
- ```typescript
185
- await client.beta.sessions.events.send(
186
- session.id,
187
- {
188
- events: [
189
- {
190
- type: "user.custom_tool_result",
191
- custom_tool_use_id: "sevt_abc123",
192
- content: [{ type: "text", text: "All 42 tests passed." }],
193
- },
194
- ],
195
- },
196
- );
197
- ```
198
-
199
- ---
200
-
201
- ## Poll Events
202
-
203
- ```typescript
204
- const events = await client.beta.sessions.events.list(
205
- session.id,
206
- );
207
- for (const event of events.data) {
208
- console.log(`${event.type}: ${event.id}`);
209
- }
210
- ```
211
-
212
- ---
213
-
214
- ## Full Streaming Loop with Custom Tools
215
-
216
- ```typescript
217
- function runCustomTool(toolName: string, toolInput: unknown): string {
218
- if (toolName === "run_tests") {
219
- // Your tool implementation here
220
- return "All tests passed.";
221
- }
222
- return `Unknown tool: ${toolName}`;
223
- }
224
-
225
- async function runSession(client: Anthropic, sessionId: string) {
226
- while (true) {
227
- const stream = await client.beta.sessions.events.stream(
228
- sessionId,
229
- );
230
-
231
- const toolCalls: Anthropic.Beta.Sessions.BetaManagedAgentsAgentCustomToolUseEvent[] = [];
232
-
233
- for await (const event of stream) {
234
- if (event.type === "agent.message") {
235
- for (const block of event.content) {
236
- if (block.type === "text") {
237
- process.stdout.write(block.text);
238
- }
239
- }
240
- } else if (event.type === "agent.custom_tool_use") {
241
- toolCalls.push(event);
242
- } else if (event.type === "session.status_idle") {
243
- break;
244
- } else if (event.type === "session.status_terminated") {
245
- return;
246
- }
247
- }
248
-
249
- if (toolCalls.length === 0) break;
250
-
251
- // Process custom tool calls
252
- const results = toolCalls.map((call) => ({
253
- type: "user.custom_tool_result" as const,
254
- custom_tool_use_id: call.id,
255
- content: [{ type: "text" as const, text: runCustomTool(call.name, call.input) }],
256
- }));
257
-
258
- await client.beta.sessions.events.send(
259
- sessionId,
260
- { events: results },
261
- );
262
- }
263
- }
264
- ```
265
-
266
- ---
267
-
268
- ## Upload a File
269
-
270
- ```typescript
271
- import fs from "fs";
272
-
273
- const file = await client.beta.files.upload({
274
- file: fs.createReadStream("data.csv"),
275
- purpose: "agent",
276
- });
277
-
278
- // Use in a session
279
- const session = await client.beta.sessions.create(
280
- {
281
- agent: { type: "agent", id: agent.id, version: agent.version },
282
- environment_id: environment.id,
283
- resources: [{ type: "file", file_id: file.id, mount_path: "/workspace/data.csv" }],
284
- },
285
- );
286
- ```
287
-
288
- ---
289
-
290
- ## List and Download Session Files
291
-
292
- List files the agent wrote to `/mnt/session/outputs/` during a session, then download them.
293
-
294
- ```typescript
295
- import fs from "fs";
296
-
297
- // List files associated with a session
298
- const files = await client.beta.files.list({
299
- scope_id: session.id,
300
- betas: ["managed-agents-2026-04-01"],
301
- });
302
- for (const f of files.data) {
303
- console.log(f.filename, f.size_bytes);
304
-
305
- // Download and save to disk
306
- const resp = await client.beta.files.download(f.id);
307
- const buffer = Buffer.from(await resp.arrayBuffer());
308
- fs.writeFileSync(f.filename, buffer);
309
- }
310
- ```
311
-
312
- > Tip: There's a brief indexing lag (~1-3s) between `session.status_idle` and output files appearing in `files.list`. Retry once or twice if the list is empty.
313
-
314
- ---
315
-
316
- ## Session Management
317
-
318
- ```typescript
319
- // Get session details
320
- const session = await client.beta.sessions.retrieve("sesn_011CZxAbc123Def456");
321
- console.log(session.status, session.usage);
322
-
323
- // List sessions
324
- const sessions = await client.beta.sessions.list();
325
-
326
- // Delete a session
327
- await client.beta.sessions.delete("sesn_011CZxAbc123Def456");
328
-
329
- // Archive a session
330
- await client.beta.sessions.archive("sesn_011CZxAbc123Def456");
331
- ```
332
-
333
- ---
334
-
335
- ## MCP Server Integration
336
-
337
- ```typescript
338
- // Agent declares MCP server (no auth here - auth goes in a vault)
339
- const agent = await client.beta.agents.create({
340
- name: "MCP Agent",
341
- model: "claude-opus-5",
342
- mcp_servers: [
343
- { type: "url", name: "my-tools", url: "https://my-mcp-server.example.com/sse" },
344
- ],
345
- tools: [
346
- { type: "agent_toolset_20260401", default_config: { enabled: true } },
347
- { type: "mcp_toolset", mcp_server_name: "my-tools" },
348
- ],
349
- });
350
-
351
- // Session attaches vault(s) containing credentials for those MCP server URLs
352
- const session = await client.beta.sessions.create({
353
- agent: agent.id,
354
- environment_id: environment.id,
355
- vault_ids: [vault.id],
356
- });
357
- ```
358
-
359
- See `shared/managed-agents-tools.md` §Vaults for creating vaults and adding credentials.