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 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 an idle goal loop that keeps advancing a concrete objective until it finishes, hits a blocker, or reaches its iteration budget. Goals are explicit, control commands are user-owned, and the loop should stop itself only when the objective is actually complete or blocked.
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 idle PromptEmitter with a self-contained goal prompt. Each iteration inspects its own emitter state, assesses progress, takes the next small action, validates when relevant, and stops the emitter when the goal is complete or blocked. As the remaining iteration budget gets low, the prompt shifts into wrap-up mode so it leaves a useful handoff instead of starting broad new work.
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` uses an idle PromptEmitter, it is best when the session has natural idle gaps. For always-busy autopilot-style flows, prefer a timed prompt loop or hook/session-injector based delivery so follow-up context can still reach the session.
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
- idle PromptEmitter with a self-contained goal prompt, an explicit `maxRuns`
154
- budget, and instructions to stop itself when complete or blocked. Goals must be
155
- explicit user requests; do not infer them from ordinary one-shot tasks, and do
156
- not treat budget exhaustion as successful completion. Goal prompts should
157
- self-steer by reading their own emitter state with `tap_list_emitters` and
158
- switching into wrap-up mode when the remaining iteration budget is low.
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), prefer a timed PromptEmitter or hook-driven/session-injector delivery
161
- instead of relying on idle to trigger the next goal step.
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