@aicalas/loopy 0.2.0 → 0.2.1
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.
- package/README.md +213 -38
- package/dist/adapters.d.ts +2 -0
- package/dist/adapters.d.ts.map +1 -1
- package/dist/adapters.js.map +1 -1
- package/dist/authoring/effect-config.d.ts +2 -2
- package/dist/authoring/effect-config.d.ts.map +1 -1
- package/dist/authoring/effect-config.js +2 -2
- package/dist/authoring/effect-config.js.map +1 -1
- package/dist/authoring/types.d.ts +5 -0
- package/dist/authoring/types.d.ts.map +1 -1
- package/dist/cli-help.d.ts +1 -11
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +184 -134
- package/dist/cli-help.js.map +1 -1
- package/dist/cli.d.ts +2 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -46
- package/dist/cli.js.map +1 -1
- package/dist/core/calls.d.ts +3 -1
- package/dist/core/calls.d.ts.map +1 -1
- package/dist/core/calls.js +7 -2
- package/dist/core/calls.js.map +1 -1
- package/dist/core/prompts.d.ts +8 -0
- package/dist/core/prompts.d.ts.map +1 -0
- package/dist/core/prompts.js +59 -0
- package/dist/core/prompts.js.map +1 -0
- package/dist/core/wire.d.ts +13 -4
- package/dist/core/wire.d.ts.map +1 -1
- package/dist/core/wire.js +29 -8
- package/dist/core/wire.js.map +1 -1
- package/dist/harnesses/claude.d.ts.map +1 -1
- package/dist/harnesses/claude.js +10 -1
- package/dist/harnesses/claude.js.map +1 -1
- package/dist/harnesses/codex-app-server.d.ts +29 -0
- package/dist/harnesses/codex-app-server.d.ts.map +1 -0
- package/dist/harnesses/codex-app-server.js +166 -0
- package/dist/harnesses/codex-app-server.js.map +1 -0
- package/dist/harnesses/codex.d.ts.map +1 -1
- package/dist/harnesses/codex.js +34 -7
- package/dist/harnesses/codex.js.map +1 -1
- package/dist/harnesses/opencode.d.ts.map +1 -1
- package/dist/harnesses/opencode.js +1 -0
- package/dist/harnesses/opencode.js.map +1 -1
- package/dist/harnesses/probe.d.ts +5 -0
- package/dist/harnesses/probe.d.ts.map +1 -0
- package/dist/harnesses/probe.js +53 -0
- package/dist/harnesses/probe.js.map +1 -0
- package/dist/temporal/activities.d.ts.map +1 -1
- package/dist/temporal/activities.js +50 -10
- package/dist/temporal/activities.js.map +1 -1
- package/dist/temporal/contracts.d.ts +1 -1
- package/dist/temporal/contracts.d.ts.map +1 -1
- package/dist/temporal/contracts.js +1 -1
- package/dist/temporal/contracts.js.map +1 -1
- package/dist/temporal/handle.d.ts.map +1 -1
- package/dist/temporal/handle.js +23 -4
- package/dist/temporal/handle.js.map +1 -1
- package/dist/temporal/metadata.d.ts +7 -0
- package/dist/temporal/metadata.d.ts.map +1 -0
- package/dist/temporal/metadata.js +44 -0
- package/dist/temporal/metadata.js.map +1 -0
- package/dist/temporal/observe.d.ts +15 -2
- package/dist/temporal/observe.d.ts.map +1 -1
- package/dist/temporal/observe.js +7 -2
- package/dist/temporal/observe.js.map +1 -1
- package/dist/temporal/supervisor.d.ts +3 -1
- package/dist/temporal/supervisor.d.ts.map +1 -1
- package/dist/temporal/supervisor.js +31 -7
- package/dist/temporal/supervisor.js.map +1 -1
- package/dist/temporal/worker.d.ts.map +1 -1
- package/dist/temporal/worker.js +1 -0
- package/dist/temporal/worker.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,101 +1,276 @@
|
|
|
1
1
|
# loopy
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Loopy runs durable local agent workflows on Temporal. You author each workflow as a TypeScript function; Loopy discovers it, receives external or scheduled input, provisions isolated git worktrees, runs coding agents, validates structured output, and records orchestration state in Temporal.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Loopy is built for one developer running a local worker against a Temporal Service. Temporal owns workflow state, retries, schedules, histories, and generic execution operations. Loopy owns the workflow authoring API, agent sessions and worktrees, idempotent effects, human questions, and recovery of parked agent calls.
|
|
6
|
+
|
|
7
|
+
Loopy currently only supports receiving signals from GH. The long term goal is to provide a plugin system for users to build their own integrations.
|
|
6
8
|
|
|
7
9
|
## Install
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
Loopy requires Node.js 24 and git.
|
|
10
12
|
|
|
11
13
|
```bash
|
|
12
14
|
npm install --global @aicalas/loopy
|
|
13
15
|
```
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
Add Loopy and a Standard JSON Schema validator such as Zod to the project that contains your workflow modules:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @aicalas/loopy zod
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Start
|
|
24
|
+
|
|
25
|
+
The complete setup, configuration, authoring, storage, and recovery guide ships with the package and works offline without configuration or a Temporal connection:
|
|
16
26
|
|
|
17
|
-
|
|
27
|
+
```bash
|
|
28
|
+
loopy guide
|
|
29
|
+
loopy guide setup
|
|
30
|
+
loopy guide workflows
|
|
31
|
+
loopy guide recovery
|
|
32
|
+
```
|
|
18
33
|
|
|
19
|
-
|
|
34
|
+
After configuring the repository, workflow directory, working directory, and Temporal connection, start the local runtime:
|
|
20
35
|
|
|
21
36
|
```bash
|
|
22
|
-
cp config.example.toml ~/.config/loopy/config.toml # set repository and both task queue names
|
|
23
|
-
export GITHUB_TOKEN=…
|
|
24
|
-
make temporal-dev # or point [temporal] at your own Service
|
|
25
37
|
loopy loop
|
|
26
38
|
```
|
|
27
39
|
|
|
28
|
-
|
|
40
|
+
## Typical Docker Compose setup
|
|
41
|
+
|
|
42
|
+
A typical local deployment runs the Temporal development server and Loopy as separate Compose services. This single-developer setup uses Temporal's embedded development server; deploy Temporal separately for production.
|
|
43
|
+
|
|
44
|
+
Create `config.toml` beside your `workflows/` and `prompts/` directories:
|
|
45
|
+
|
|
46
|
+
```toml
|
|
47
|
+
repository = "owner/repo"
|
|
48
|
+
default_branch = "main"
|
|
49
|
+
project_directory = "/opt/loopy"
|
|
50
|
+
workflows = "workflows"
|
|
51
|
+
working_directory = "/var/lib/loopy"
|
|
52
|
+
poll_interval_seconds = 60
|
|
53
|
+
|
|
54
|
+
[temporal]
|
|
55
|
+
control_task_queue = "loopy-control"
|
|
56
|
+
agent_task_queue = "loopy-agent"
|
|
57
|
+
|
|
58
|
+
[agent_worker]
|
|
59
|
+
max_concurrent_activities = 2
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Build Loopy into the same development environment that its agents need. Workflow modules are imported under Node before they are bundled, so the image installs the workflow project's locked dependencies under `/opt/loopy` rather than relying on globally installed packages. This minimal `Dockerfile.loopy` includes the three supported provider CLIs, but a real image must also install the target repository's language runtimes, package managers, build tools, test dependencies, MCP server executables, and system libraries:
|
|
63
|
+
|
|
64
|
+
```dockerfile
|
|
65
|
+
FROM node:24-bookworm
|
|
66
|
+
|
|
67
|
+
RUN apt-get update \
|
|
68
|
+
&& apt-get install -y --no-install-recommends ca-certificates gh git make openssh-client python3 g++ \
|
|
69
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
70
|
+
RUN npm install --global @anthropic-ai/claude-code @openai/codex opencode-ai@^1.18.3
|
|
71
|
+
RUN mkdir -p /opt/loopy /var/lib/loopy && chown -R node:node /opt/loopy /var/lib/loopy
|
|
72
|
+
|
|
73
|
+
WORKDIR /opt/loopy
|
|
74
|
+
COPY --chown=node:node package.json package-lock.json ./
|
|
75
|
+
USER node
|
|
76
|
+
RUN npm ci --omit=dev
|
|
77
|
+
ENTRYPOINT ["/opt/loopy/node_modules/.bin/loopy"]
|
|
78
|
+
CMD ["--config", "/opt/loopy/config.toml", "loop"]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Use the official [Temporal CLI image](https://hub.docker.com/r/temporalio/temporal) for a persistent local development service:
|
|
82
|
+
|
|
83
|
+
```yaml
|
|
84
|
+
services:
|
|
85
|
+
temporal:
|
|
86
|
+
image: temporalio/temporal:1.8.1
|
|
87
|
+
command:
|
|
88
|
+
- server
|
|
89
|
+
- start-dev
|
|
90
|
+
- --ip
|
|
91
|
+
- 0.0.0.0
|
|
92
|
+
- --db-filename
|
|
93
|
+
- /home/temporal/temporal.db
|
|
94
|
+
ports:
|
|
95
|
+
- "7233:7233"
|
|
96
|
+
- "8233:8233"
|
|
97
|
+
volumes:
|
|
98
|
+
- temporal-data:/home/temporal
|
|
99
|
+
restart: unless-stopped
|
|
100
|
+
|
|
101
|
+
loopy:
|
|
102
|
+
build:
|
|
103
|
+
context: .
|
|
104
|
+
dockerfile: Dockerfile.loopy
|
|
105
|
+
depends_on:
|
|
106
|
+
- temporal
|
|
107
|
+
env_file:
|
|
108
|
+
- .env
|
|
109
|
+
environment:
|
|
110
|
+
TEMPORAL_ADDRESS: temporal:7233
|
|
111
|
+
init: true
|
|
112
|
+
volumes:
|
|
113
|
+
- ./config.toml:/opt/loopy/config.toml:ro
|
|
114
|
+
- ./workflows:/opt/loopy/workflows:ro
|
|
115
|
+
- ./prompts:/opt/loopy/prompts:ro
|
|
116
|
+
- loopy-work:/var/lib/loopy
|
|
117
|
+
- agent-home:/home/node
|
|
118
|
+
restart: unless-stopped
|
|
119
|
+
|
|
120
|
+
volumes:
|
|
121
|
+
temporal-data:
|
|
122
|
+
loopy-work:
|
|
123
|
+
agent-home:
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The three volumes provide durability: `temporal-data` holds Workflow histories and schedules, `loopy-work` holds the managed clone and open worktrees, and `agent-home` holds provider authentication, configuration, MCP definitions, and session transcripts.
|
|
127
|
+
|
|
128
|
+
## Credentials and agent environment
|
|
129
|
+
|
|
130
|
+
Loopy does not create, broker, or store credentials. Supply only the credentials needed by the workflows and harnesses you use. For a local Compose deployment, put secret environment variables in an uncommitted `.env` file or inject them with your secret manager:
|
|
131
|
+
|
|
132
|
+
```dotenv
|
|
133
|
+
GITHUB_TOKEN=github-token
|
|
134
|
+
ANTHROPIC_API_KEY=anthropic-key
|
|
135
|
+
CODEX_API_KEY=openai-key
|
|
136
|
+
# Add the provider-specific variables referenced by your OpenCode configuration.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Start the stack and open Temporal UI at `http://localhost:8233`:
|
|
29
140
|
|
|
30
|
-
|
|
141
|
+
```bash
|
|
142
|
+
docker compose up --build -d
|
|
143
|
+
docker compose logs -f loopy
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Functionality
|
|
31
147
|
|
|
32
|
-
|
|
148
|
+
| Capability | Built-in behavior |
|
|
149
|
+
| --- | --- |
|
|
150
|
+
| Intake | Poll labelled GitHub issues or pull requests, or start from a Temporal cron/interval schedule. Edge-mode watchers consume the intake label before user code runs; level mode repeats while it remains attached. |
|
|
151
|
+
| Agents | Run Claude, Codex, or OpenCode in isolated git worktrees and resume the same provider session across calls. |
|
|
152
|
+
| Control flow | Use ordinary TypeScript branches, loops, sequential calls, and `Promise.all` fan-out inside the Temporal Workflow. |
|
|
153
|
+
| Results | Require every agent call to return a value validated by a Standard JSON Schema validator or literal JSON Schema. |
|
|
154
|
+
| Effects | Apply idempotent GitHub label changes once per effect ID. |
|
|
155
|
+
| Human input | Post a GitHub question, park without holding an agent slot, and resume from the reply or `loopy answer`. |
|
|
156
|
+
| Prompts and progress | Read prompt files with explicit scalar interpolation and publish the latest progress to Temporal Current Details. |
|
|
157
|
+
| Recovery | Drain safely on shutdown and reconcile or retry parked agent calls with `loopy resolve`. |
|
|
158
|
+
|
|
159
|
+
## Workflow example
|
|
160
|
+
|
|
161
|
+
Each TypeScript module default-exports a workflow created with `defineWorkflow` from `@aicalas/loopy/workflow`. This example covers structured agent output, a prompt file, progress, human input, and an idempotent effect:
|
|
33
162
|
|
|
34
163
|
```ts
|
|
164
|
+
import {
|
|
165
|
+
claude,
|
|
166
|
+
defineWorkflow,
|
|
167
|
+
githubAttention,
|
|
168
|
+
githubComments,
|
|
169
|
+
githubLabels,
|
|
170
|
+
githubPullRequests,
|
|
171
|
+
promptFile,
|
|
172
|
+
triggerIssue,
|
|
173
|
+
} from "@aicalas/loopy/workflow";
|
|
174
|
+
import { z } from "zod";
|
|
175
|
+
|
|
176
|
+
const Review = z.object({
|
|
177
|
+
summary: z.string(),
|
|
178
|
+
question: z.string().nullable(),
|
|
179
|
+
});
|
|
180
|
+
|
|
35
181
|
export default defineWorkflow({
|
|
36
182
|
name: "review",
|
|
37
183
|
watcher: githubPullRequests({
|
|
38
184
|
repository: "owner/repo",
|
|
39
185
|
label: "agent:review",
|
|
40
|
-
onStart: { add: ["agent:
|
|
186
|
+
onStart: { add: ["agent:running"] },
|
|
41
187
|
}),
|
|
42
188
|
attention: githubAttention({ target: "trigger" }),
|
|
43
189
|
async run(ctx) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
190
|
+
const issue = triggerIssue(ctx.trigger);
|
|
191
|
+
const reviewer = ctx.agent(
|
|
192
|
+
"reviewer",
|
|
193
|
+
claude({ model: "claude-opus-4-8", effort: "high", permissionMode: "acceptEdits" }),
|
|
194
|
+
);
|
|
195
|
+
ctx.progress("Reviewing the pull request");
|
|
196
|
+
let review = await reviewer.run({
|
|
197
|
+
output: Review,
|
|
198
|
+
prompt: [promptFile("prompts/review.md", { repository: ctx.trigger.repository, issue })],
|
|
48
199
|
});
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
200
|
+
if (review.question !== null) {
|
|
201
|
+
const answer = await ctx.ask(
|
|
202
|
+
"review-question",
|
|
203
|
+
githubComments({ repository: ctx.trigger.repository, issue }),
|
|
204
|
+
{ prompt: [review.question] },
|
|
205
|
+
);
|
|
206
|
+
review = await reviewer.run({
|
|
207
|
+
output: Review,
|
|
208
|
+
prompt: [`The human answered: ${answer}`],
|
|
53
209
|
});
|
|
54
210
|
}
|
|
55
211
|
await ctx.effect(
|
|
56
212
|
"mark-reviewed",
|
|
57
213
|
githubLabels({
|
|
58
214
|
repository: ctx.trigger.repository,
|
|
59
|
-
issue
|
|
60
|
-
remove: ["agent:reviewing"],
|
|
215
|
+
issue,
|
|
61
216
|
add: ["agent:reviewed"],
|
|
217
|
+
remove: ["agent:running"],
|
|
62
218
|
}),
|
|
63
219
|
);
|
|
64
|
-
return
|
|
220
|
+
return review;
|
|
65
221
|
},
|
|
66
222
|
});
|
|
67
223
|
```
|
|
68
224
|
|
|
69
|
-
|
|
225
|
+
The GitHub watcher claims each matching pull request, then Temporal runs the workflow. The named agent keeps its provider session and worktree across calls.
|
|
70
226
|
|
|
71
227
|
## Scheduled workflows
|
|
72
228
|
|
|
73
|
-
A workflow declares
|
|
229
|
+
A workflow declares one input. Use a Temporal schedule instead of a watcher for time-based work:
|
|
74
230
|
|
|
75
231
|
```ts
|
|
232
|
+
import { defineWorkflow } from "@aicalas/loopy/workflow";
|
|
233
|
+
|
|
76
234
|
export default defineWorkflow({
|
|
77
235
|
name: "nightly-maintenance",
|
|
78
236
|
schedule: { cron: "0 2 * * *", timezone: "UTC" },
|
|
79
237
|
async run(ctx) {
|
|
80
|
-
|
|
81
|
-
return { complete: true };
|
|
238
|
+
return { source: ctx.trigger.source };
|
|
82
239
|
},
|
|
83
240
|
});
|
|
84
241
|
```
|
|
85
242
|
|
|
86
|
-
|
|
243
|
+
Schedules also accept `intervalSeconds` and an overlap policy. Attention is optional for scheduled workflows; GitHub attention must target a fixed issue because there is no source issue or pull request.
|
|
244
|
+
|
|
245
|
+
## Agent harnesses
|
|
246
|
+
|
|
247
|
+
| Factory | Provider | Required options | Session behavior |
|
|
248
|
+
| --- | --- | --- | --- |
|
|
249
|
+
| `claude` | Anthropic Claude Agent SDK | `model`, `effort` | Resumes a Claude session in the same worktree path. |
|
|
250
|
+
| `codex` | OpenAI Codex SDK | `model`, `effort` | Resumes a Codex thread in the same worktree. |
|
|
251
|
+
| `opencode` | OpenCode SDK v2 and OpenCode 1.18.3 or newer on `PATH` | `model` as `provider/model`, `effort` | Resumes an OpenCode session in the same worktree. |
|
|
252
|
+
|
|
253
|
+
Harness options also control provider isolation, permissions, approvals, and filesystem sandboxing. See `loopy guide workflows` for the authoring boundaries and remember that provider configuration and repository instructions can grant tools and credentials beyond Loopy's declared adapters.
|
|
87
254
|
|
|
88
255
|
## Adapters
|
|
89
256
|
|
|
90
|
-
|
|
257
|
+
Import adapter factories from `@aicalas/loopy/workflow`. Each adapter declares its own repository, target, and credential source.
|
|
91
258
|
|
|
92
259
|
| Kind | Factories | Role |
|
|
93
260
|
| --- | --- | --- |
|
|
94
|
-
| Watcher | `githubIssues`, `githubPullRequests` | Poll a repository for a label
|
|
95
|
-
| Harness | `claude`, `codex`, `opencode` |
|
|
96
|
-
| Attention | `githubAttention` | Report halted, parked, stuck, and awaiting-answer
|
|
97
|
-
| Effect | `githubLabels` |
|
|
98
|
-
| Channel | `githubComments` |
|
|
99
|
-
| Prompt | `promptFile` |
|
|
100
|
-
|
|
101
|
-
|
|
261
|
+
| Watcher | `githubIssues`, `githubPullRequests` | Poll a repository for a label and claim each match. |
|
|
262
|
+
| Harness | `claude`, `codex`, `opencode` | Run the agent behind `ctx.agent(id, harness)`. |
|
|
263
|
+
| Attention | `githubAttention` | Report halted, parked, stuck, and awaiting-answer workflows. |
|
|
264
|
+
| Effect | `githubLabels` | Apply idempotent writes through `ctx.effect(id, effect)`. |
|
|
265
|
+
| Channel | `githubComments` | Ask a human through `ctx.ask(id, channel, request)`. |
|
|
266
|
+
| Prompt | `promptFile` | Read a prompt segment from disk outside the Workflow isolate. |
|
|
267
|
+
|
|
268
|
+
The GitHub adapters make label changes idempotent by converging on the desired label set. Before changing an issue or pull request, Loopy reads its current labels, applies the requested additions and removals, and writes the result only if it changed. Retrying the operation reaches the same state: adding a label that is already present or removing one that is already absent does nothing.
|
|
269
|
+
|
|
270
|
+
Agent `output` accepts a Standard JSON Schema validator such as Zod, Valibot, or ArkType, or a literal JSON Schema.
|
|
271
|
+
|
|
272
|
+
Prompt files interpolate explicitly supplied scalar values. Use named placeholders such as `{{ repository }}` in the file. Names must be identifiers; strings are inserted verbatim, while finite numbers, booleans, and `null` use their normal JSON scalar text. Every placeholder needs a supplied value, unused values are allowed, and malformed placeholders or unsupported values halt the workflow before Loopy contacts an agent or posts a question.
|
|
273
|
+
|
|
274
|
+
Preserve the Temporal Service state, Loopy config, configured working directory, and each agent provider's session data while executions are open. A session ID stored in Temporal cannot reconstruct a deleted provider transcript or worktree.
|
|
275
|
+
|
|
276
|
+
Use Temporal UI or CLI for execution inspection, Event History, cancellation, reset, termination, and Schedule administration. Use `loopy resolve` for a parked agent call and `loopy answer` for a workflow waiting on human input.
|
package/dist/adapters.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export interface HarnessContext {
|
|
|
7
7
|
schema: JsonObject;
|
|
8
8
|
/** Continue this provider session instead of starting a new one. */
|
|
9
9
|
resumeSessionId?: string;
|
|
10
|
+
/** Persist a provider session as soon as it can outlive the current Activity. */
|
|
11
|
+
checkpointSession?(sessionId: string): void;
|
|
10
12
|
}
|
|
11
13
|
export interface HarnessResult {
|
|
12
14
|
value: JsonValue;
|
package/dist/adapters.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAInC,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAOxB,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAW5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAW5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAmD1F;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;CAAG;AAsEnD,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;QAC7E,QAAQ,EAAE,MAAM,CAAC,CAAC,wBAAwB,EAAE,kBAAkB,CAAC,CAAC;QAChE,QAAQ,EAAE,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;QACvC,iBAAiB,EAAE,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACnD,QAAQ,EAAE,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAsC,MAAoB;IACvE,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EffectConfig } from "../core/wire.js";
|
|
2
|
-
import type { PromptFileRef } from "./types.js";
|
|
2
|
+
import type { PromptFileRef, PromptTemplateValue } from "./types.js";
|
|
3
3
|
export interface GitHubLabelsAction {
|
|
4
4
|
/** The repository whose issue/PR labels change; use `ctx.trigger.repository` for the trigger. */
|
|
5
5
|
repository: string;
|
|
@@ -12,5 +12,5 @@ export interface GitHubLabelsAction {
|
|
|
12
12
|
}
|
|
13
13
|
export declare function githubLabels(action: GitHubLabelsAction): EffectConfig;
|
|
14
14
|
/** Reference a prompt file by a path relative to the configured project directory. */
|
|
15
|
-
export declare function promptFile(path: string): PromptFileRef;
|
|
15
|
+
export declare function promptFile(path: string, values?: Readonly<Record<string, PromptTemplateValue>>): PromptFileRef;
|
|
16
16
|
//# sourceMappingURL=effect-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effect-config.d.ts","sourceRoot":"","sources":["../../src/authoring/effect-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"effect-config.d.ts","sourceRoot":"","sources":["../../src/authoring/effect-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,WAAW,kBAAkB;IACjC,iGAAiG;IACjG,UAAU,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,wGAAwG;IACxG,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAWrE;AAED,sFAAsF;AACtF,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,GACrD,aAAa,CAEf"}
|
|
@@ -11,7 +11,7 @@ export function githubLabels(action) {
|
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
/** Reference a prompt file by a path relative to the configured project directory. */
|
|
14
|
-
export function promptFile(path) {
|
|
15
|
-
return { file: path };
|
|
14
|
+
export function promptFile(path, values) {
|
|
15
|
+
return values === undefined ? { file: path } : { file: path, values };
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=effect-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effect-config.js","sourceRoot":"","sources":["../../src/authoring/effect-config.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE;YACN,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YAC5B,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAClC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;SACzC;KACF,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,UAAU,
|
|
1
|
+
{"version":3,"file":"effect-config.js","sourceRoot":"","sources":["../../src/authoring/effect-config.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE;YACN,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YAC5B,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAClC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;SACzC;KACF,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,MAAsD;IAEtD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACxE,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Duration } from "@temporalio/common";
|
|
2
2
|
import type { AttentionConfig, ChannelConfig, EffectConfig, HarnessConfig, JsonObject, JsonValue, ReadonlyJsonObject, TriggerCandidate } from "../core/wire.js";
|
|
3
|
+
import type { PromptTemplateValues } from "../core/prompts.js";
|
|
3
4
|
export type { AttentionConfig, ChannelConfig, EffectConfig, HarnessConfig } from "../core/wire.js";
|
|
5
|
+
export type { PromptTemplateValue } from "../core/prompts.js";
|
|
4
6
|
/** A watcher selector plus its match configuration, as produced by `src/authoring/watcher-config.ts`. */
|
|
5
7
|
export interface WatcherDeclaration {
|
|
6
8
|
name: string;
|
|
@@ -31,6 +33,7 @@ export type ChannelDeclaration = ChannelConfig;
|
|
|
31
33
|
/** A prompt segment the agent Activity reads from disk; the isolate cannot touch the filesystem. */
|
|
32
34
|
export interface PromptFileRef {
|
|
33
35
|
readonly file: string;
|
|
36
|
+
readonly values?: PromptTemplateValues;
|
|
34
37
|
}
|
|
35
38
|
/**
|
|
36
39
|
* The Standard JSON Schema surface loopy consumes: a validator that can render itself as a plain
|
|
@@ -93,6 +96,8 @@ export interface WorkflowContext {
|
|
|
93
96
|
readonly workflowRunId: string;
|
|
94
97
|
agent(id: string, harness: HarnessConfig): AgentHandle;
|
|
95
98
|
effect(id: string, effect: EffectConfig): Promise<void>;
|
|
99
|
+
/** Replace the human-readable progress shown for this execution in Temporal UI and CLI. */
|
|
100
|
+
progress(details: string): void;
|
|
96
101
|
/**
|
|
97
102
|
* Ask a human a question over a configured channel and park until a reply arrives, returning the
|
|
98
103
|
* answer as a string. The instance parks on a durable wait - no agent slot is held - and resumes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/authoring/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/authoring/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnG,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,yGAAyG;AACzG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,CAAC;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,YAAY,CAAC;CACtD;AAED,yFAAyF;AACzF,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG,WAAW,CAAC;CACnG;AAED,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAEnD,oGAAoG;AACpG,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAE/C,oGAAoG;AACpG,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB,CAAC,MAAM,GAAG,OAAO;IACpD,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,UAAU,EAAE;YACnB,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAClF,CAAC;QACF,QAAQ,CAAC,KAAK,CAAC,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAC;KAC1D,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC/D;AAED,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAErE,mGAAmG;AACnG,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IACrC,QAAQ,CAAC,WAAW,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAA;SAAE,GAAG,SAAS,CAAA;KAAE,CAAC;CAC1F,GACG,MAAM,GACN,UAAU,CAAC;AAEf,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,YAAY;IAClD,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,GAAG,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAChF;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,WAAW,CAAC;IACvD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpF;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,SAAS;IACrD,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,iGAAiG;IACjG,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,GAAG,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3C"}
|
package/dist/cli-help.d.ts
CHANGED
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Operator-facing guidance printed by the CLI. It must stand alone: loopy runs on a machine whose
|
|
3
|
-
* agent operator is not expected to open repo docs or reach the network, so everything an operator
|
|
4
|
-
* needs is emitted here. Two standing rules shape the copy - loopy never explains how Temporal
|
|
5
|
-
* itself works (it names the temporal-developer skill and stops), and it never teaches authoring a
|
|
6
|
-
* new adapter (there is no plugin API yet; the built-ins are configured, not defined).
|
|
7
|
-
*/
|
|
8
|
-
/** Named so an operator can find generic Temporal help; loopy-specific guidance never depends on it. */
|
|
1
|
+
/** Operator-facing guidance bundled with the CLI so it works without configuration, a Temporal connection, or network access. */
|
|
9
2
|
export declare const TEMPORAL_SKILL_POINTER: string;
|
|
10
3
|
export interface GuideTopic {
|
|
11
4
|
readonly name: string;
|
|
12
5
|
readonly summary: string;
|
|
13
6
|
readonly body: string;
|
|
14
7
|
}
|
|
15
|
-
/** Ordered so `loopy guide` (no topic) lists them in the sequence an operator meets them. */
|
|
16
8
|
export declare const GUIDE_TOPICS: readonly GuideTopic[];
|
|
17
9
|
export declare function guideTopicNames(): string[];
|
|
18
10
|
export declare function findGuideTopic(name: string): GuideTopic | undefined;
|
|
19
|
-
/** `loopy guide` with no topic: the topic list plus the one external pointer loopy makes. */
|
|
20
11
|
export declare function renderGuideIndex(): string;
|
|
21
|
-
/** Appended after `loopy --help`: the playbook that points at the guide topics. */
|
|
22
12
|
export declare function helpPlaybook(): string;
|
|
23
13
|
//# sourceMappingURL=cli-help.d.ts.map
|
package/dist/cli-help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-help.d.ts","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cli-help.d.ts","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"AAAA,iIAAiI;AAEjI,eAAO,MAAM,sBAAsB,QAEkF,CAAC;AAEtH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAiND,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAAiC,CAAC;AAEhF,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEnE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAazC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAUrC"}
|