@kylecheng3146/agent-ops 0.2.5 → 0.2.6

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.
@@ -7,6 +7,9 @@ import { collectBaseChangePaths, collectChangeSurface } from "../verify/change-s
7
7
  import { calculateSourceFingerprint } from "../verify/source-fingerprint.js";
8
8
  const FINGERPRINT = /^[a-f0-9]{64}$/u;
9
9
  const SESSION = /^[^\0\r\n]{1,256}$/u;
10
+ function shellQuote(value) {
11
+ return `'${value.replaceAll("'", "'\"'\"'")}'`;
12
+ }
10
13
  function gateResult(action, status, code, remedy) {
11
14
  return { action, status, code, ...(remedy === undefined ? {} : { remedy }) };
12
15
  }
@@ -142,7 +145,7 @@ export class CompletionGateService {
142
145
  }
143
146
  catch (error) {
144
147
  return error instanceof AgentOpsError && error.code === "TASK_SESSION_UNATTACHED"
145
- ? gateResult("block", "FAIL", "COMPLETION_GATE_TASK_REQUIRED", "Attach this conversation to a formal task.")
148
+ ? gateResult("block", "FAIL", "COMPLETION_GATE_TASK_REQUIRED", `Attach this conversation to a formal task: agent-ops task create --title <title> --criterion <json> --criterion <json> (two to five criteria), then agent-ops task attach --task <task-id> --session ${shellQuote(sessionId)}.`)
146
149
  : gateResult("block", "UNKNOWN", "COMPLETION_GATE_TASK_UNAVAILABLE", "Repair task state with agent-ops doctor before stopping.");
147
150
  }
148
151
  if (stored.status !== "complete") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kylecheng3146/agent-ops",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "Evidence-driven development loops for agy, Codex, Claude Code, and opencode",
5
5
  "type": "module",
6
6
  "license": "MIT",