@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,56 +0,0 @@
1
- import { taskGit, disabledTaskFilters } from "./task-git.ts";
2
- import { lstat, readFile, realpath, writeFile } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import { basename, dirname, isAbsolute, relative, resolve } from "node:path";
5
-
6
- export type RecordedWorktree = { id: string; repository?: string; worktree?: string };
7
-
8
- type Marker = { version: 1; id: string; repository: string; worktree: string };
9
-
10
- function isWithin(child: string, parent: string) {
11
- const value = relative(parent, child);
12
- return value === "" || (!value.startsWith("..") && !isAbsolute(value));
13
- }
14
-
15
- async function git(args: string[], cwd: string): Promise<string> {
16
- return (await taskGit(args, cwd)).trim();
17
- }
18
-
19
- async function commonGitDir(cwd: string) {
20
- const value = await git(["rev-parse", "--git-common-dir"], cwd);
21
- return realpath(isAbsolute(value) ? value : resolve(cwd, value));
22
- }
23
-
24
- export async function createWorktreeMarker(parent: string, task: Required<RecordedWorktree>) {
25
- const marker: Marker = { version: 1, id: task.id, repository: await realpath(task.repository), worktree: task.worktree };
26
- await writeFile(`${parent}/.piexis-task.json`, `${JSON.stringify(marker)}\n`, { mode: 0o600, flag: "wx" });
27
- }
28
-
29
- /** Reject corrupt metadata before any destructive worktree cleanup. */
30
- export async function validateTaskWorktree(task: RecordedWorktree): Promise<{ worktree: string; parent: string; dirty: boolean }> {
31
- if (!task.worktree || !task.repository) throw new Error("Task has no recorded repository worktree.");
32
- const parent = dirname(task.worktree);
33
- if (basename(task.worktree) !== "worktree" || !basename(parent).startsWith("piexis-task-"))
34
- throw new Error("Refusing to clean a worktree not created by Piexis.");
35
- const [canonicalTmp, canonicalParent, canonicalRepository] = await Promise.all([realpath(tmpdir()), realpath(parent), realpath(task.repository)]);
36
- if (!isWithin(canonicalParent, canonicalTmp)) throw new Error("Refusing to clean a worktree outside the system temporary directory.");
37
- const markerPath = `${canonicalParent}/.piexis-task.json`;
38
- let marker: Marker;
39
- try { marker = JSON.parse(await readFile(markerPath, "utf8")); }
40
- catch { throw new Error("Refusing to clean a worktree without a valid Piexis marker."); }
41
- if (marker.version !== 1 || marker.id !== task.id || marker.worktree !== task.worktree || marker.repository !== canonicalRepository)
42
- throw new Error("Refusing to clean a worktree whose Piexis marker does not match task metadata.");
43
- const stat = await lstat(task.worktree);
44
- if (!stat.isDirectory() || stat.isSymbolicLink()) throw new Error("Recorded worktree is not a normal directory.");
45
- const worktree = await realpath(task.worktree);
46
- if (worktree !== resolve(canonicalParent, "worktree")) throw new Error("Recorded worktree path does not match its Piexis task directory.");
47
- const [topLevel, taskGitDir, repositoryGitDir] = await Promise.all([
48
- git(["rev-parse", "--show-toplevel"], worktree).then(realpath),
49
- commonGitDir(worktree),
50
- commonGitDir(canonicalRepository)
51
- ]);
52
- if (topLevel !== worktree || taskGitDir !== repositoryGitDir)
53
- throw new Error("Recorded path is not a Git worktree associated with the expected repository.");
54
- const dirty = Boolean(await git([...await disabledTaskFilters(worktree), "status", "--porcelain"], worktree));
55
- return { worktree, parent: canonicalParent, dirty };
56
- }
@@ -1,32 +0,0 @@
1
- import { spawnSync } from "node:child_process";
2
- import { readFileSync } from "node:fs";
3
-
4
- const bump = process.argv[2] ?? "patch";
5
- if (!["patch", "minor", "major"].includes(bump)) {
6
- console.error("Usage: npm run release -- [patch|minor|major]");
7
- process.exit(1);
8
- }
9
-
10
- function run(command, args) {
11
- const result = spawnSync(command, args, { stdio: "inherit", shell: false });
12
- if (result.error) throw result.error;
13
- if (result.status !== 0) process.exit(result.status ?? 1);
14
- }
15
-
16
- const status = spawnSync("git", ["status", "--porcelain"], { encoding: "utf8" });
17
- if (status.status !== 0) process.exit(status.status ?? 1);
18
- if (status.stdout.trim()) {
19
- console.error("Working tree is not clean. Commit or stash changes first.");
20
- process.exit(1);
21
- }
22
-
23
- console.log("Running checks...");
24
- run("npm", ["run", "check"]);
25
- run("npm", ["test"]);
26
-
27
- console.log(`Bumping ${bump} version and creating a Git tag...`);
28
- run("npm", ["version", bump]);
29
-
30
- const packageJson = JSON.parse(readFileSync("package.json", "utf8"));
31
- console.log(`Pushing v${packageJson.version}; GitHub Actions will publish it.`);
32
- run("git", ["push", "origin", "HEAD", "--follow-tags"]);