copilot-tap-extension 2.0.6 → 2.0.8
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 +8 -3
- package/bin/install.mjs +5 -0
- package/dist/copilot-instructions.md +25 -9
- package/dist/extension.mjs +484 -30
- package/dist/skills/tap-goal/SKILL.md +127 -31
- package/dist/skills/tap-loop/SKILL.md +6 -0
- package/dist/skills/tap-monitor/SKILL.md +19 -3
- package/dist/skills/tap-orchestrate/SKILL.md +81 -0
- package/dist/version.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -212,13 +212,15 @@ The prompt fires immediately, then re-fires after each idle period. It stops aft
|
|
|
212
212
|
|
|
213
213
|
**Work toward a goal autonomously**
|
|
214
214
|
|
|
215
|
-
Use `/tap-goal` to create
|
|
215
|
+
Use `/tap-goal` to create a goal loop that keeps advancing a concrete objective until it finishes, hits a blocker, or reaches its iteration budget. Goals are explicit completion contracts, control commands are user-owned, and the loop should stop itself only when the objective is actually complete, blocked, or budget-limited.
|
|
216
216
|
|
|
217
217
|
```
|
|
218
218
|
/tap-goal migrate the repo to the new API and keep going until tests pass
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
The skill creates a temporary
|
|
221
|
+
The skill creates a temporary PromptEmitter with a self-contained goal prompt. Conservative goals use an idle schedule; autopilot-style goals use a timed backoff schedule so the objective can keep nudging the session even when Copilot stays busy. Each iteration inspects its own emitter state, works against a six-part goal contract, records structured progress to its EventStream, validates when relevant, and stops the emitter when the goal is complete, blocked, or budget-limited.
|
|
222
|
+
|
|
223
|
+
A strong goal names the outcome, verification surface, constraints, boundaries, iteration policy, and blocked stop condition. Completion requires an evidence audit against concrete files, tests, logs, benchmark output, generated artifacts, or research evidence.
|
|
222
224
|
|
|
223
225
|
Goal loops default to 50 iterations unless you specify another budget.
|
|
224
226
|
|
|
@@ -228,7 +230,7 @@ Use `/tap-goal stop <name>` or `/tap-goal clear <name>` to stop a specific goal
|
|
|
228
230
|
|
|
229
231
|
Use `/tap-goal resume <objective>` to start a new loop from an objective. Stopped goal loops do not preserve resumable internal state; resuming creates a new emitter from the supplied objective.
|
|
230
232
|
|
|
231
|
-
Because `/tap-goal`
|
|
233
|
+
Because `/tap-goal` can use either idle or timed PromptEmitters, choose idle for conservative continuation and timed-autopilot mode for always-busy flows. Timed prompt deferrals do not consume the run budget; budget exhaustion still means "handoff needed," not success.
|
|
232
234
|
|
|
233
235
|
**Tune the filter live**
|
|
234
236
|
|
|
@@ -286,6 +288,9 @@ PLAN.md # ubiquitous language and design decisions
|
|
|
286
288
|
| [Provider guide](./docs/providers.md) | Add external tools to Copilot via the WebSocket provider interface |
|
|
287
289
|
| [Use cases and patterns](./docs/use-cases.md) | Recipes for deploy watchers, PR monitors, log tailers, and more |
|
|
288
290
|
| [Copilot SDK canvas surfaces](./docs/recipes/copilot-sdk-canvas.md) | Local SDK findings for extension-owned canvas UI surfaces |
|
|
291
|
+
| [Codex Goals lessons for tap-goal](./docs/recipes/codex-goals-for-tap-goal.md) | Goal-loop contract, evidence audit, and autopilot scheduling guidance |
|
|
292
|
+
| [Tap control-plane roadmap](./docs/recipes/tap-control-plane-roadmap.md) | Implemented and deferred control-plane slices from the Codex/Copilot audit |
|
|
293
|
+
| [Provider integration patterns](./docs/recipes/provider-integration-patterns.md) | Jira/GitHub, CI auto-fix, code review, SAST, and browser/Detour provider recipes |
|
|
289
294
|
| [Evals](./docs/evals.md) | Run or extend the automated test suite |
|
|
290
295
|
| [Copilot instructions](./src/copilot-instructions.md) | Understand or customize how the agent uses this extension |
|
|
291
296
|
| [Implementation plan](./PLAN.md) | Ubiquitous language and naming conventions for contributors |
|
package/bin/install.mjs
CHANGED
|
@@ -268,6 +268,11 @@ function buildAncillaryArtifacts(targetRoot) {
|
|
|
268
268
|
dest: path.join(targetRoot, "skills", "tap-goal", "SKILL.md"),
|
|
269
269
|
label: "skills/tap-goal/SKILL.md"
|
|
270
270
|
},
|
|
271
|
+
{
|
|
272
|
+
src: path.join(distDir, "skills", "tap-orchestrate", "SKILL.md"),
|
|
273
|
+
dest: path.join(targetRoot, "skills", "tap-orchestrate", "SKILL.md"),
|
|
274
|
+
label: "skills/tap-orchestrate/SKILL.md"
|
|
275
|
+
},
|
|
271
276
|
{
|
|
272
277
|
src: path.join(distDir, "copilot-instructions.md"),
|
|
273
278
|
dest: path.join(targetRoot, "copilot-instructions.md"),
|
|
@@ -145,20 +145,36 @@ If the work is mostly reasoning rather than data collection, prefer a PromptEmit
|
|
|
145
145
|
|
|
146
146
|
- prompt once for a background check (oneTime)
|
|
147
147
|
- prompt + `every="<interval>"` for a fixed maintenance loop (timed)
|
|
148
|
-
- prompt + `every="idle"` + `maxRuns` for autonomous goal loops with explicit iteration budgets (`/tap-goal`)
|
|
148
|
+
- prompt + `every="idle"` + `maxRuns` for conservative autonomous goal loops with explicit iteration budgets (`/tap-goal`)
|
|
149
|
+
- prompt + `everySchedule=[...]` + `maxRuns` for autopilot-compatible goals that need timed nudges while the session may stay busy
|
|
149
150
|
|
|
150
151
|
This is the closest analogue to Claude's session-scoped `/tap-loop` behavior in this extension.
|
|
151
152
|
|
|
152
153
|
For "keep working until done" requests, prefer `/tap-goal`: create an
|
|
153
|
-
|
|
154
|
-
budget
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
154
|
+
PromptEmitter with a self-contained goal prompt and an explicit `maxRuns`
|
|
155
|
+
budget. A strong goal is a six-part completion contract: outcome, verification
|
|
156
|
+
surface, constraints, boundaries, iteration policy, and blocked stop condition.
|
|
157
|
+
Goals must be explicit user requests; do not infer them from ordinary one-shot
|
|
158
|
+
tasks, and do not treat budget exhaustion as successful completion. Goal prompts
|
|
159
|
+
should self-steer by reading their own emitter state with `tap_list_emitters`,
|
|
160
|
+
switching into wrap-up mode when the remaining iteration budget is low, posting
|
|
161
|
+
structured iteration records to their EventStream with `tap_post`, and stopping
|
|
162
|
+
themselves when complete or blocked. Completion requires an evidence audit
|
|
163
|
+
against concrete files, tests, logs, benchmark output, or generated artifacts.
|
|
164
|
+
Use `tap_verify_goal_output` and `tap_audit_claims` when the verification surface
|
|
165
|
+
is a workspace file, stream entry, or already-run command result.
|
|
159
166
|
If the session may stay continuously busy (for example in autopilot-heavy
|
|
160
|
-
flows),
|
|
161
|
-
instead of relying on idle to trigger the next
|
|
167
|
+
flows), use a timed PromptEmitter with a backoff schedule such as
|
|
168
|
+
`everySchedule=["2m","5m","10m"]` instead of relying on idle to trigger the next
|
|
169
|
+
goal step.
|
|
170
|
+
|
|
171
|
+
Use `tap_get_session_state` before mode-sensitive work. It reads the current
|
|
172
|
+
Copilot mode, model/reasoning effort, tasks, schedules, open canvases, and UI
|
|
173
|
+
capabilities without mutating the session.
|
|
174
|
+
|
|
175
|
+
For genuinely multi-role work, prefer `/tap-orchestrate`: create one coordinator
|
|
176
|
+
PromptEmitter that gates role-specific sub-emitters using EventStream handoffs.
|
|
177
|
+
Do not use orchestration for tasks a single `/tap-goal` loop can complete.
|
|
162
178
|
|
|
163
179
|
## Borrow from the official SDK examples
|
|
164
180
|
|