@dynamicagents/plugins 0.12.0 → 0.14.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 (132) hide show
  1. package/README.md +58 -77
  2. package/dist/browser/index.d.ts +0 -2
  3. package/dist/browser/index.js +21 -27
  4. package/dist/claude-code/cards.d.ts +55 -0
  5. package/dist/claude-code/cards.js +283 -0
  6. package/dist/claude-code/config.d.ts +28 -63
  7. package/dist/claude-code/config.js +0 -11
  8. package/dist/claude-code/egress.d.ts +8 -1
  9. package/dist/claude-code/egress.js +42 -4
  10. package/dist/claude-code/events.d.ts +106 -9
  11. package/dist/claude-code/events.js +201 -56
  12. package/dist/claude-code/github.d.ts +39 -0
  13. package/dist/claude-code/github.js +82 -0
  14. package/dist/claude-code/index.d.ts +16 -90
  15. package/dist/claude-code/index.js +14 -276
  16. package/dist/claude-code/model.d.ts +152 -0
  17. package/dist/claude-code/model.js +366 -0
  18. package/dist/claude-code/run.d.ts +230 -116
  19. package/dist/claude-code/run.js +380 -167
  20. package/dist/claude-code/session.d.ts +131 -0
  21. package/dist/claude-code/session.js +288 -0
  22. package/dist/claude-code/spec.d.ts +46 -0
  23. package/dist/claude-code/spec.js +83 -0
  24. package/dist/claude-code/verified.d.ts +15 -0
  25. package/dist/claude-code/verified.js +15 -0
  26. package/dist/computer/context.d.ts +1 -5
  27. package/dist/computer/context.js +7 -10
  28. package/dist/computer/file-lock.js +5 -4
  29. package/dist/computer/gate.d.ts +4 -4
  30. package/dist/computer/gate.js +5 -5
  31. package/dist/computer/index.d.ts +40 -258
  32. package/dist/computer/index.js +71 -324
  33. package/dist/computer/paths.d.ts +36 -16
  34. package/dist/computer/paths.js +42 -29
  35. package/dist/computer/proxy.d.ts +45 -0
  36. package/dist/computer/proxy.js +234 -0
  37. package/dist/computer/render.d.ts +1 -40
  38. package/dist/computer/render.js +2 -68
  39. package/dist/computer/tools-exec.js +12 -13
  40. package/dist/computer/tools-file.d.ts +9 -1
  41. package/dist/computer/tools-file.js +22 -82
  42. package/dist/computer/{tools-find.d.ts → tools-grep.d.ts} +1 -1
  43. package/dist/computer/tools-grep.js +129 -0
  44. package/dist/repo/checkout.d.ts +4 -5
  45. package/dist/repo/checkout.js +31 -8
  46. package/dist/repo/context.d.ts +35 -9
  47. package/dist/repo/context.js +101 -49
  48. package/dist/repo/index.d.ts +73 -28
  49. package/dist/repo/index.js +112 -96
  50. package/dist/repo/tools-checks.d.ts +3 -0
  51. package/dist/repo/tools-checks.js +112 -0
  52. package/dist/repo/tools-clone.js +1 -1
  53. package/dist/repo/tools-pr.d.ts +14 -0
  54. package/dist/repo/{tools-forge.js → tools-pr.js} +53 -36
  55. package/dist/repo/tools-review.d.ts +9 -0
  56. package/dist/repo/tools-review.js +67 -47
  57. package/dist/repo/tools-worktree.js +144 -60
  58. package/dist/repo/tools-worktrees.d.ts +12 -0
  59. package/dist/repo/tools-worktrees.js +48 -0
  60. package/dist/repo/url.d.ts +2 -2
  61. package/dist/repo/url.js +7 -7
  62. package/dist/scratch/index.d.ts +4 -4
  63. package/dist/scratch/index.js +12 -11
  64. package/dist/{computer → workspace}/advisory.d.ts +4 -4
  65. package/dist/{computer → workspace}/advisory.js +2 -2
  66. package/dist/{computer/host → workspace}/ca-trust.d.ts +8 -1
  67. package/dist/{computer/host → workspace}/ca-trust.js +12 -3
  68. package/dist/{computer/host → workspace}/container-deps.d.ts +4 -0
  69. package/dist/{computer/host → workspace}/container-deps.js +26 -1
  70. package/dist/{computer/host → workspace}/container-fault.d.ts +3 -3
  71. package/dist/{computer/host → workspace}/container-fault.js +23 -8
  72. package/dist/workspace/deps-snapshot.d.ts +110 -0
  73. package/dist/workspace/deps-snapshot.js +424 -0
  74. package/dist/workspace/exec.d.ts +94 -0
  75. package/dist/workspace/exec.js +153 -0
  76. package/dist/workspace/format.d.ts +36 -0
  77. package/dist/workspace/format.js +57 -0
  78. package/dist/{computer/host → workspace}/git-host.d.ts +21 -4
  79. package/dist/{computer/host → workspace}/git-host.js +72 -2
  80. package/dist/{computer/host → workspace}/git-identity.d.ts +1 -1
  81. package/dist/{computer/host → workspace}/git-identity.js +1 -1
  82. package/dist/workspace/index.d.ts +44 -47
  83. package/dist/workspace/index.js +52 -112
  84. package/dist/{computer/host → workspace}/install-job.d.ts +53 -4
  85. package/dist/{computer/host → workspace}/install-job.js +346 -178
  86. package/dist/{computer → workspace}/install.d.ts +17 -8
  87. package/dist/{computer → workspace}/install.js +24 -6
  88. package/dist/{computer/host/workspace.d.ts → workspace/object.d.ts} +125 -27
  89. package/dist/{computer/host/workspace.js → workspace/object.js} +341 -58
  90. package/dist/workspace/open.d.ts +95 -0
  91. package/dist/workspace/open.js +63 -0
  92. package/dist/workspace/read.d.ts +16 -0
  93. package/dist/workspace/read.js +22 -0
  94. package/dist/{computer → workspace}/shell.d.ts +5 -5
  95. package/dist/{computer → workspace}/shell.js +6 -6
  96. package/dist/{computer/host → workspace}/wake.d.ts +3 -1
  97. package/package.json +17 -37
  98. package/dist/arc-agi/analysis.d.ts +0 -322
  99. package/dist/arc-agi/analysis.js +0 -802
  100. package/dist/arc-agi/client.d.ts +0 -82
  101. package/dist/arc-agi/client.js +0 -113
  102. package/dist/arc-agi/game-tools.d.ts +0 -24
  103. package/dist/arc-agi/game-tools.js +0 -26
  104. package/dist/arc-agi/index.d.ts +0 -40
  105. package/dist/arc-agi/index.js +0 -175
  106. package/dist/arc-agi/main-agent.d.ts +0 -24
  107. package/dist/arc-agi/main-agent.js +0 -62
  108. package/dist/arc-agi/recipe.d.ts +0 -48
  109. package/dist/arc-agi/recipe.js +0 -97
  110. package/dist/arc-agi/scorecard.d.ts +0 -118
  111. package/dist/arc-agi/scorecard.js +0 -163
  112. package/dist/arc-agi/soul.d.ts +0 -29
  113. package/dist/arc-agi/soul.js +0 -79
  114. package/dist/arc-agi/store.d.ts +0 -153
  115. package/dist/arc-agi/store.js +0 -215
  116. package/dist/arc-agi/tools.d.ts +0 -36
  117. package/dist/arc-agi/tools.js +0 -574
  118. package/dist/arc-agi/types.d.ts +0 -211
  119. package/dist/arc-agi/types.js +0 -19
  120. package/dist/claude-code/recipe.d.ts +0 -53
  121. package/dist/claude-code/recipe.js +0 -100
  122. package/dist/computer/read.d.ts +0 -133
  123. package/dist/computer/read.js +0 -200
  124. package/dist/computer/tools-find.js +0 -216
  125. package/dist/recall/index.d.ts +0 -105
  126. package/dist/recall/index.js +0 -181
  127. package/dist/repo/tools-forge.d.ts +0 -4
  128. package/dist/triage/index.d.ts +0 -360
  129. package/dist/triage/index.js +0 -311
  130. /package/dist/{computer/host → workspace}/sync.d.ts +0 -0
  131. /package/dist/{computer/host → workspace}/sync.js +0 -0
  132. /package/dist/{computer/host → workspace}/wake.js +0 -0
@@ -0,0 +1,95 @@
1
+ import type { WorkspaceClient, WorkspaceStub } from "@cloudflare/computer";
2
+ import type { WorkspaceAdvisory } from "./advisory.js";
3
+ /**
4
+ * Reaching a workspace: which one a call names, and the two ways to open it.
5
+ *
6
+ * A leaf, so the object, `/computer`'s tools and its proxy in
7
+ * `../computer/proxy.ts` can import it without
8
+ * going through the barrel that re-exports them.
9
+ */
10
+ /**
11
+ * Where a parent puts the workspace name so its sub-agents reach the same one.
12
+ *
13
+ * A sub-agent cannot compute this itself. The name is derived from the caller
14
+ * and the repository, and the checkout it should work in is one its parent
15
+ * chose — so a sub-agent that named its own would land beside the parent's
16
+ * checkout, in a workspace with nothing in it.
17
+ *
18
+ * A spec's `prepare` runs on the parent, where the name resolves, and its
19
+ * return value reaches the sub-agent's plugins as `runtime()`. That is the
20
+ * channel core built for exactly this, and it is emphatically *not* the
21
+ * sub-agent's input, which the parent's model writes — a workspace name there
22
+ * would be model-authored, and a model naming another caller's workspace would
23
+ * get that caller's files.
24
+ */
25
+ export declare const WORKSPACE_RUNTIME_KEY = "workspaceName";
26
+ /**
27
+ * Read a parent-resolved workspace name off a sub-agent's `runtime()`.
28
+ *
29
+ * Returns `undefined` rather than throwing on anything unexpected: a parent has
30
+ * no runtime at all, and falling back to the configured thunk is right there.
31
+ */
32
+ export declare function workspaceNameFromRuntime(runtime: unknown): string | undefined;
33
+ /**
34
+ * The Durable Object the workspace lives in, as this plugin needs to see it.
35
+ *
36
+ * Structural rather than imported: the class is the host's — it owns the
37
+ * container binding, the alarm and the install job — and a plugin that imported
38
+ * it would stop a second host from bringing its own. `__getWorkspaceStub` is the
39
+ * one method `getWorkspace()` calls across the boundary, and it is what
40
+ * `withWorkspace` installs (or what a host that constructs `Workspace` itself
41
+ * reimplements, which is the same three lines).
42
+ */
43
+ export interface WorkspaceHost extends Rpc.DurableObjectBranded {
44
+ __getWorkspaceStub(): Promise<WorkspaceStub>;
45
+ /**
46
+ * The same workspace for filesystem-only work, which the host must serve
47
+ * **without starting a container**.
48
+ *
49
+ * The filesystem is the Durable Object's own SQLite, while the first command
50
+ * in a fresh container waits for the whole tree to be pushed into it — so a
51
+ * file tool served the other way waits minutes for a local `readdir`. See
52
+ * `WorkspaceObjectBase.__getWorkspaceFsStub` in `./object.ts`.
53
+ *
54
+ * Required rather than optional, for the reason {@link advisories} gives. A
55
+ * host with nothing to distinguish returns its own `__getWorkspaceStub()`.
56
+ */
57
+ __getWorkspaceFsStub(): Promise<WorkspaceStub>;
58
+ /**
59
+ * Everything currently true about the workspace that a caller must not assume
60
+ * away — see {@link file://./advisory.ts}. An empty array is the good case.
61
+ *
62
+ * Required rather than optional, and not only because Workers RPC types an
63
+ * optional method as a union nothing can call. A host with nothing to report
64
+ * returns `[]` in one line; a host that forgot to expose it gets a compile
65
+ * error instead of a `bash` that silently runs against a half-built
66
+ * `node_modules`, or against a workspace whose writes are being dropped.
67
+ *
68
+ * `deriveAdvisories` builds the array from what the host already knows, so
69
+ * implementing this is gathering what the host has rather than writing policy.
70
+ */
71
+ advisories(): Promise<readonly WorkspaceAdvisory[]>;
72
+ }
73
+ /**
74
+ * Open the workspace behind a Durable Object stub.
75
+ *
76
+ * The cast is unavoidable, and narrow enough to be worth isolating here rather
77
+ * than repeating. `getWorkspace` wants a handle whose `__getWorkspaceStub()`
78
+ * resolves to a `WorkspaceStub` — the concrete class, private fields and all.
79
+ * Across a Durable Object boundary Workers RPC hands back a structural
80
+ * `Stub<WorkspaceStub>`, which forwards every method faithfully but carries none
81
+ * of the class's private brand: runtime-compatible, type-incompatible. This is
82
+ * the only place in the plugin that gap is crossed.
83
+ */
84
+ export declare function openWorkspace(host: DurableObjectStub<WorkspaceHost>): Promise<WorkspaceClient>;
85
+ /**
86
+ * The same workspace, opened for filesystem work alone.
87
+ *
88
+ * `getWorkspace` calls exactly one method on what it is handed, so the host is
89
+ * wrapped in an object answering it from the other side of the seam — see
90
+ * {@link WorkspaceHost.__getWorkspaceFsStub}. Everything past that is identical.
91
+ *
92
+ * **Only the file tools take this.** `bash` and `workspaceExec` need the
93
+ * container started and its CA installed, so they open it the other way.
94
+ */
95
+ export declare function openWorkspaceFs(host: DurableObjectStub<WorkspaceHost>): Promise<WorkspaceClient>;
@@ -0,0 +1,63 @@
1
+ import { getWorkspace } from "@cloudflare/computer";
2
+ /**
3
+ * Reaching a workspace: which one a call names, and the two ways to open it.
4
+ *
5
+ * A leaf, so the object, `/computer`'s tools and its proxy in
6
+ * `../computer/proxy.ts` can import it without
7
+ * going through the barrel that re-exports them.
8
+ */
9
+ /**
10
+ * Where a parent puts the workspace name so its sub-agents reach the same one.
11
+ *
12
+ * A sub-agent cannot compute this itself. The name is derived from the caller
13
+ * and the repository, and the checkout it should work in is one its parent
14
+ * chose — so a sub-agent that named its own would land beside the parent's
15
+ * checkout, in a workspace with nothing in it.
16
+ *
17
+ * A spec's `prepare` runs on the parent, where the name resolves, and its
18
+ * return value reaches the sub-agent's plugins as `runtime()`. That is the
19
+ * channel core built for exactly this, and it is emphatically *not* the
20
+ * sub-agent's input, which the parent's model writes — a workspace name there
21
+ * would be model-authored, and a model naming another caller's workspace would
22
+ * get that caller's files.
23
+ */
24
+ export const WORKSPACE_RUNTIME_KEY = "workspaceName";
25
+ /**
26
+ * Read a parent-resolved workspace name off a sub-agent's `runtime()`.
27
+ *
28
+ * Returns `undefined` rather than throwing on anything unexpected: a parent has
29
+ * no runtime at all, and falling back to the configured thunk is right there.
30
+ */
31
+ export function workspaceNameFromRuntime(runtime) {
32
+ const value = runtime?.[WORKSPACE_RUNTIME_KEY];
33
+ return typeof value === "string" && value.length > 0 ? value : undefined;
34
+ }
35
+ /**
36
+ * Open the workspace behind a Durable Object stub.
37
+ *
38
+ * The cast is unavoidable, and narrow enough to be worth isolating here rather
39
+ * than repeating. `getWorkspace` wants a handle whose `__getWorkspaceStub()`
40
+ * resolves to a `WorkspaceStub` — the concrete class, private fields and all.
41
+ * Across a Durable Object boundary Workers RPC hands back a structural
42
+ * `Stub<WorkspaceStub>`, which forwards every method faithfully but carries none
43
+ * of the class's private brand: runtime-compatible, type-incompatible. This is
44
+ * the only place in the plugin that gap is crossed.
45
+ */
46
+ export function openWorkspace(host) {
47
+ return getWorkspace(host);
48
+ }
49
+ /**
50
+ * The same workspace, opened for filesystem work alone.
51
+ *
52
+ * `getWorkspace` calls exactly one method on what it is handed, so the host is
53
+ * wrapped in an object answering it from the other side of the seam — see
54
+ * {@link WorkspaceHost.__getWorkspaceFsStub}. Everything past that is identical.
55
+ *
56
+ * **Only the file tools take this.** `bash` and `workspaceExec` need the
57
+ * container started and its CA installed, so they open it the other way.
58
+ */
59
+ export function openWorkspaceFs(host) {
60
+ return getWorkspace({
61
+ __getWorkspaceStub: () => host.__getWorkspaceFsStub()
62
+ });
63
+ }
@@ -0,0 +1,16 @@
1
+ import type { WorkspaceClient } from "@cloudflare/computer";
2
+ /**
3
+ * Does this path exist?
4
+ *
5
+ * `getWorkspace()` types `fs` as the in-process `WorkspaceFilesystem`, but the
6
+ * value on the far side of a Durable Object boundary is a
7
+ * `WorkspaceFilesystemStub`, which carries a few methods the local class does
8
+ * not — `exists` among them. So the fast path is asked for rather than cast to,
9
+ * and `stat` is the fallback for a host that hands back a local workspace.
10
+ *
11
+ * The fallback treats *any* `stat` failure as absence, which is the honest
12
+ * reading for a tool whose entire answer is a boolean: there is no error channel
13
+ * to distinguish "missing" from "unreadable", and the caller's next move — look
14
+ * somewhere else — is the same either way.
15
+ */
16
+ export declare function pathExists(fs: WorkspaceClient["fs"], path: string): Promise<boolean>;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Does this path exist?
3
+ *
4
+ * `getWorkspace()` types `fs` as the in-process `WorkspaceFilesystem`, but the
5
+ * value on the far side of a Durable Object boundary is a
6
+ * `WorkspaceFilesystemStub`, which carries a few methods the local class does
7
+ * not — `exists` among them. So the fast path is asked for rather than cast to,
8
+ * and `stat` is the fallback for a host that hands back a local workspace.
9
+ *
10
+ * The fallback treats *any* `stat` failure as absence, which is the honest
11
+ * reading for a tool whose entire answer is a boolean: there is no error channel
12
+ * to distinguish "missing" from "unreadable", and the caller's next move — look
13
+ * somewhere else — is the same either way.
14
+ */
15
+ export async function pathExists(fs, path) {
16
+ // Called as a method, never through `.call`: on an RPC stub `.call` is read as
17
+ // a remote method, and the stub it would pass as `this` cannot be serialised.
18
+ const remote = fs;
19
+ if (typeof remote.exists === "function")
20
+ return remote.exists(path);
21
+ return fs.stat(path).then(() => true, () => false);
22
+ }
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Run a command under {@link file://./index.ts ComputerConfig.shell} with its
2
+ * Run a command under {@link file://./exec.ts WorkspaceClientConfig.shell} with its
3
3
  * two output streams left as they are, or hand it back untouched when no shell
4
4
  * is configured.
5
5
  *
6
6
  * This is the variant for a caller that **reads the result in code**: `stdout` is
7
7
  * a data channel it compares or parses, and `stderr` is a separate diagnostic.
8
- * {@link file://./index.ts computerExec} is that caller, on behalf of
8
+ * {@link file://./exec.ts workspaceExec} is that caller, on behalf of
9
9
  * `@dynamicagents/plugins/repo`, which asks git questions like
10
10
  * `symbolic-ref --short refs/remotes/origin/HEAD` and `rev-list --count` and
11
11
  * needs the answer alone.
@@ -19,12 +19,12 @@
19
19
  */
20
20
  export declare function withShell(command: string, shell: string | undefined): string;
21
21
  /**
22
- * Run a command under {@link file://./index.ts ComputerConfig.shell} with its
22
+ * Run a command under {@link file://./exec.ts WorkspaceClientConfig.shell} with its
23
23
  * two output streams merged into one transcript, in the order they were
24
24
  * written.
25
25
  *
26
26
  * This is the variant for a caller whose consumer is **a model reading output**.
27
- * `sb_exec` is that caller. A project's check is a chain — `wrangler types &&
27
+ * `bash` is that caller. A project's check is a chain — `wrangler types &&
28
28
  * prettier && eslint && tsc` — and *which tool spoke last* is how you know which
29
29
  * one failed. A stdout block and a separate stderr block destroy that ordering,
30
30
  * and a model that wants it back re-runs the whole gate as
@@ -38,7 +38,7 @@ export declare function withShell(command: string, shell: string | undefined): s
38
38
  *
39
39
  * With no shell configured there is no wrapper process to redirect, so the
40
40
  * command goes to the runtime untouched and the two streams arrive separate.
41
- * That is not a gap: {@link file://./render.ts renderResult} renders them as a
41
+ * That is not a gap: {@link file://../computer/render.ts renderResult} renders them as a
42
42
  * labelled `--- stderr ---` block for exactly this case. The transcript is the
43
43
  * better answer, not the only supported one.
44
44
  */
@@ -23,20 +23,20 @@ import { shellQuote } from "@cloudflare/computer";
23
23
  * truncated with both ends kept.
24
24
  *
25
25
  * Requires a shell that implements it — `bash`, `zsh`, `ksh`, not `sh`/dash. A
26
- * host setting {@link file://./index.ts ComputerConfig.shell} is choosing that
26
+ * host setting {@link file://./exec.ts WorkspaceClientConfig.shell} is choosing that
27
27
  * shell explicitly.
28
28
  */
29
29
  function wrapped(command, shell) {
30
30
  return `${shell} -o pipefail -c ${shellQuote(command)}`;
31
31
  }
32
32
  /**
33
- * Run a command under {@link file://./index.ts ComputerConfig.shell} with its
33
+ * Run a command under {@link file://./exec.ts WorkspaceClientConfig.shell} with its
34
34
  * two output streams left as they are, or hand it back untouched when no shell
35
35
  * is configured.
36
36
  *
37
37
  * This is the variant for a caller that **reads the result in code**: `stdout` is
38
38
  * a data channel it compares or parses, and `stderr` is a separate diagnostic.
39
- * {@link file://./index.ts computerExec} is that caller, on behalf of
39
+ * {@link file://./exec.ts workspaceExec} is that caller, on behalf of
40
40
  * `@dynamicagents/plugins/repo`, which asks git questions like
41
41
  * `symbolic-ref --short refs/remotes/origin/HEAD` and `rev-list --count` and
42
42
  * needs the answer alone.
@@ -52,12 +52,12 @@ export function withShell(command, shell) {
52
52
  return shell ? wrapped(command, shell) : command;
53
53
  }
54
54
  /**
55
- * Run a command under {@link file://./index.ts ComputerConfig.shell} with its
55
+ * Run a command under {@link file://./exec.ts WorkspaceClientConfig.shell} with its
56
56
  * two output streams merged into one transcript, in the order they were
57
57
  * written.
58
58
  *
59
59
  * This is the variant for a caller whose consumer is **a model reading output**.
60
- * `sb_exec` is that caller. A project's check is a chain — `wrangler types &&
60
+ * `bash` is that caller. A project's check is a chain — `wrangler types &&
61
61
  * prettier && eslint && tsc` — and *which tool spoke last* is how you know which
62
62
  * one failed. A stdout block and a separate stderr block destroy that ordering,
63
63
  * and a model that wants it back re-runs the whole gate as
@@ -71,7 +71,7 @@ export function withShell(command, shell) {
71
71
  *
72
72
  * With no shell configured there is no wrapper process to redirect, so the
73
73
  * command goes to the runtime untouched and the two streams arrive separate.
74
- * That is not a gap: {@link file://./render.ts renderResult} renders them as a
74
+ * That is not a gap: {@link file://../computer/render.ts renderResult} renders them as a
75
75
  * labelled `--- stderr ---` block for exactly this case. The transcript is the
76
76
  * better answer, not the only supported one.
77
77
  */
@@ -12,8 +12,10 @@ export type WorkspaceWakeHandlers = {
12
12
  installRun: () => Promise<void>;
13
13
  installWatch: () => Promise<void>;
14
14
  idleReclaim: () => Promise<void>;
15
- /** Start a cold container before a command needs it — see `./workspace.ts`. */
15
+ /** Start a cold container before a command needs it — see `./object.ts`. */
16
16
  containerWarm: () => Promise<void>;
17
+ /** Snapshot a container that just installed — see `./deps-snapshot.ts`. */
18
+ depsSnapshot: () => Promise<void>;
17
19
  containerIdle: (payload?: SyncDrainIntent) => Promise<void>;
18
20
  syncRetry: (payload?: SyncDrainIntent) => Promise<void>;
19
21
  };
package/package.json CHANGED
@@ -1,14 +1,12 @@
1
1
  {
2
2
  "name": "@dynamicagents/plugins",
3
- "version": "0.12.0",
4
- "description": "Optional, composable capabilities for a Dynamic Agent: ARC-AGI-3, browser rendering, a Linux container, git and pull requests, workspace, episodic recall, and pre-turn triage. One subpath per plugin, so a bundle grows only with what it imports.",
3
+ "version": "0.14.0",
4
+ "description": "Optional, composable capabilities for a Dynamic Agent: browser rendering, a Linux container, git and pull requests, a scratchpad, and Claude Code sessions. One subpath per plugin, so a bundle grows only with what it imports.",
5
5
  "keywords": [
6
6
  "ai-agents",
7
7
  "cloudflare-workers",
8
8
  "durable-objects",
9
9
  "agents-sdk",
10
- "arc-agi",
11
- "vectorize",
12
10
  "browser-rendering",
13
11
  "containers",
14
12
  "git",
@@ -32,26 +30,10 @@
32
30
  "LICENSE"
33
31
  ],
34
32
  "exports": {
35
- "./arc-agi": {
36
- "types": "./dist/arc-agi/index.d.ts",
37
- "import": "./dist/arc-agi/index.js"
38
- },
39
33
  "./browser": {
40
34
  "types": "./dist/browser/index.d.ts",
41
35
  "import": "./dist/browser/index.js"
42
36
  },
43
- "./workspace": {
44
- "types": "./dist/workspace/index.d.ts",
45
- "import": "./dist/workspace/index.js"
46
- },
47
- "./recall": {
48
- "types": "./dist/recall/index.d.ts",
49
- "import": "./dist/recall/index.js"
50
- },
51
- "./triage": {
52
- "types": "./dist/triage/index.d.ts",
53
- "import": "./dist/triage/index.js"
54
- },
55
37
  "./repo": {
56
38
  "types": "./dist/repo/index.d.ts",
57
39
  "import": "./dist/repo/index.js"
@@ -64,6 +46,10 @@
64
46
  "types": "./dist/claude-code/index.d.ts",
65
47
  "import": "./dist/claude-code/index.js"
66
48
  },
49
+ "./workspace": {
50
+ "types": "./dist/workspace/index.d.ts",
51
+ "import": "./dist/workspace/index.js"
52
+ },
67
53
  "./computer": {
68
54
  "types": "./dist/computer/index.d.ts",
69
55
  "import": "./dist/computer/index.js"
@@ -80,29 +66,24 @@
80
66
  "check": "npm run verify:peer-ranges && npm run verify:references && npm run types:check && prettier --check . && eslint . && tsc && npm run build && npm run verify:exports",
81
67
  "test": "vitest run",
82
68
  "test:watch": "vitest",
83
- "test:record": "RECORD=1 vitest run recorded.spec.ts",
84
69
  "verify:exports": "node scripts/verify-exports.mjs",
85
70
  "verify:references": "node scripts/verify-references.mjs",
86
71
  "verify:peer-ranges": "node scripts/verify-peer-ranges.mjs",
72
+ "probe:claude-code": "npm run build && node scripts/probe-claude-code.mjs",
87
73
  "prepack": "npm run build && npm run verify:exports",
88
74
  "prepublishOnly": "npm run check && npm test",
89
75
  "prepare": "husky || true && npm run build"
90
76
  },
91
77
  "peerDependencies": {
92
- "@cloudflare/computer": "^0.3.1",
93
- "@cloudflare/shell": "^0.4.3",
94
- "@dynamicagents/core": ">=0.12.0 <0.13.0",
95
- "@platformatic/vfs": "^0.4.0",
96
- "agents": ">=0.24.0 <0.25.0",
78
+ "@cloudflare/computer": "^0.5.0",
79
+ "@cloudflare/think": ">=0.20.2 <0.21.0",
80
+ "@dynamicagents/core": ">=0.14.0 <0.15.0",
81
+ "@platformatic/vfs": "^0.5.0",
82
+ "agents": ">=0.28.0 <0.29.0",
97
83
  "ai": "^7.0.88",
98
- "drizzle-orm": ">=0.45.2",
99
- "workers-ai-provider": "^4.0.0",
100
84
  "zod": "^4.4.3"
101
85
  },
102
86
  "peerDependenciesMeta": {
103
- "@cloudflare/shell": {
104
- "optional": true
105
- },
106
87
  "@cloudflare/computer": {
107
88
  "optional": true
108
89
  },
@@ -111,15 +92,14 @@
111
92
  }
112
93
  },
113
94
  "devDependencies": {
114
- "@cloudflare/computer": "^0.3.1",
115
- "@cloudflare/shell": "0.4.3",
116
- "@platformatic/vfs": "^0.4.0",
95
+ "@cloudflare/computer": "^0.5.0",
96
+ "@cloudflare/think": "^0.20.2",
117
97
  "@cloudflare/vitest-plugin": "^1.1.9",
118
- "@dynamicagents/core": "^0.12.0",
98
+ "@dynamicagents/core": "^0.14.0",
99
+ "@platformatic/vfs": "^0.5.0",
119
100
  "@types/node": "^26.5.1",
120
- "agents": "^0.24.0",
101
+ "agents": "^0.28.0",
121
102
  "ai": "^7.0.101",
122
- "drizzle-orm": ">=0.45.2",
123
103
  "eslint": "^10.10.0",
124
104
  "husky": "^9.1.7",
125
105
  "prettier": "^3.9.6",