@polderlabs/bizar-omp 0.10.0 → 0.12.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 (77) hide show
  1. package/README.md +9 -7
  2. package/agents/bizar-implementer.md +1 -1
  3. package/agents/bizar-researcher.md +1 -1
  4. package/agents/bizar-security-reviewer.md +1 -1
  5. package/dist/cli/install.d.ts +23 -0
  6. package/dist/cli/install.d.ts.map +1 -1
  7. package/dist/cli/install.js +108 -2
  8. package/dist/cli/install.js.map +1 -1
  9. package/dist/cli/omb-mobile.d.ts +1 -1
  10. package/dist/cli/omb-mobile.d.ts.map +1 -1
  11. package/dist/cli/omb-mobile.js +15 -3
  12. package/dist/cli/omb-mobile.js.map +1 -1
  13. package/dist/core/acceptance.d.ts +1 -1
  14. package/dist/core/acceptance.d.ts.map +1 -1
  15. package/dist/core/acceptance.js +16 -1
  16. package/dist/core/acceptance.js.map +1 -1
  17. package/dist/core/evidence.d.ts +1 -0
  18. package/dist/core/evidence.d.ts.map +1 -1
  19. package/dist/core/evidence.js +26 -0
  20. package/dist/core/evidence.js.map +1 -1
  21. package/dist/core/policies.d.ts +35 -0
  22. package/dist/core/policies.d.ts.map +1 -1
  23. package/dist/core/policies.js +18 -1
  24. package/dist/core/policies.js.map +1 -1
  25. package/dist/extension.d.ts.map +1 -1
  26. package/dist/extension.js +55 -8
  27. package/dist/extension.js.map +1 -1
  28. package/dist/mobile-host.mjs +18538 -0
  29. package/dist/omp/agent-capabilities.d.ts +69 -0
  30. package/dist/omp/agent-capabilities.d.ts.map +1 -0
  31. package/dist/omp/agent-capabilities.js +58 -0
  32. package/dist/omp/agent-capabilities.js.map +1 -0
  33. package/dist/omp/agent-capabilities.json +46 -0
  34. package/dist/omp/agent-capability-baseline.json +37 -0
  35. package/dist/omp/autonomous-settings.d.ts +21 -0
  36. package/dist/omp/autonomous-settings.d.ts.map +1 -1
  37. package/dist/omp/autonomous-settings.js +31 -2
  38. package/dist/omp/autonomous-settings.js.map +1 -1
  39. package/dist/omp/capabilities.d.ts +15 -0
  40. package/dist/omp/capabilities.d.ts.map +1 -1
  41. package/dist/omp/capabilities.js +13 -1
  42. package/dist/omp/capabilities.js.map +1 -1
  43. package/dist/omp/compatibility-manifest.json +8 -5
  44. package/dist/omp/daemon-service.d.ts.map +1 -1
  45. package/dist/omp/daemon-service.js +2 -1
  46. package/dist/omp/daemon-service.js.map +1 -1
  47. package/dist/omp/model-role-assignment.d.ts +80 -0
  48. package/dist/omp/model-role-assignment.d.ts.map +1 -1
  49. package/dist/omp/model-role-assignment.js +153 -2
  50. package/dist/omp/model-role-assignment.js.map +1 -1
  51. package/dist/omp/rpc-wire-contract.d.ts +100 -0
  52. package/dist/omp/rpc-wire-contract.d.ts.map +1 -0
  53. package/dist/omp/rpc-wire-contract.js +135 -0
  54. package/dist/omp/rpc-wire-contract.js.map +1 -0
  55. package/dist/omp/task-model-selector.d.ts +16 -10
  56. package/dist/omp/task-model-selector.d.ts.map +1 -1
  57. package/dist/omp/task-model-selector.js +34 -14
  58. package/dist/omp/task-model-selector.js.map +1 -1
  59. package/dist/omp/tmux.d.ts +24 -0
  60. package/dist/omp/tmux.d.ts.map +1 -1
  61. package/dist/omp/tmux.js +88 -4
  62. package/dist/omp/tmux.js.map +1 -1
  63. package/dist/services/native-tool-selection.d.ts +44 -0
  64. package/dist/services/native-tool-selection.d.ts.map +1 -0
  65. package/dist/services/native-tool-selection.js +91 -0
  66. package/dist/services/native-tool-selection.js.map +1 -0
  67. package/docs/compatibility/baseline.json +11 -8
  68. package/docs/compatibility/supported-surfaces.json +4 -1
  69. package/docs/releases/0.11.0.md +58 -0
  70. package/docs/releases/0.12.0.md +16 -0
  71. package/docs/releases/support-matrix.md +1 -1
  72. package/package.json +10 -4
  73. package/rules/bizar-native-omp.md +4 -0
  74. package/skills/bizar-omp/SKILL.md +44 -7
  75. package/skills/omp-native-development/SKILL.md +1 -1
  76. package/skills/omp-native-development/references/accuracy-and-versioning.md +1 -1
  77. package/skills/omp-native-development/references/source-manifest.json +4 -4
@@ -1,9 +1,34 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { ContractError, StaleEvidenceError } from "./errors.js";
3
3
  export const digest = (value) => createHash("sha256").update(value).digest("hex");
4
+ /**
5
+ * Provenance sources that describe material from a previous session rather than
6
+ * an observation of the current target tree.
7
+ *
8
+ * OMP ships a read-only `archive` eval prelude (`archive.enabled`, on by
9
+ * default) exposing prompt history, recent projects, past sessions and recaps.
10
+ * It is genuinely useful context and genuinely useless as proof: a passing
11
+ * result quoted from last week's session describes a tree that no longer
12
+ * exists. Snapshots already draw this line ("a snapshot is a recovery hint,
13
+ * not an archive"); the archive needs the same line at the evidence boundary,
14
+ * because unlike a snapshot it is *readable as text* and so can be mistaken
15
+ * for a result.
16
+ *
17
+ * Refused rather than flagged: there is no configuration in which a record
18
+ * with a historical source satisfies acceptance, so a caller cannot opt into
19
+ * the weaker behaviour by accident.
20
+ */
21
+ const HISTORICAL_SOURCES = new Set(["archive", "session-history", "prompt-history", "recap", "snapshot"]);
22
+ export function isCurrentTargetObservation(record) {
23
+ const source = record.provenance.source?.trim().toLowerCase();
24
+ return source === undefined || !HISTORICAL_SOURCES.has(source);
25
+ }
4
26
  export function createEvidence(input) {
5
27
  if (!input.id.trim())
6
28
  throw new ContractError("Evidence ID is required");
29
+ if (!isCurrentTargetObservation(input)) {
30
+ throw new ContractError(`Evidence ${input.id} is sourced from archived or session history (${input.provenance.source}); history describes a past target tree and cannot be recorded as current-target evidence`);
31
+ }
7
32
  return { ...input, recordedAt: new Date().toISOString(), stale: false };
8
33
  }
9
34
  export function invalidateEvidence(records, targetDigest, changedInputs = []) {
@@ -24,6 +49,7 @@ export function requireFreshEvidence(records, ids, targetDigest, identity = {})
24
49
  if (missingIndex !== -1)
25
50
  throw new StaleEvidenceError(ids[missingIndex] || "unknown", "required evidence is missing");
26
51
  const stale = found.find(record => record.stale || record.targetDigest !== targetDigest || record.result !== "passed"
52
+ || !isCurrentTargetObservation(record)
27
53
  || (identity.candidateId !== undefined && record.candidateId !== identity.candidateId)
28
54
  || (identity.candidateTree !== undefined && record.candidateTree !== identity.candidateTree)
29
55
  || (identity.checkSpecHash !== undefined && record.checkSpecHash !== identity.checkSpecHash)
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/core/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGhE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvG,MAAM,UAAU,cAAc,CAAC,KAAmD;IAChF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,aAAa,CAAC,yBAAyB,CAAC,CAAC;IACzE,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAyB,EAAE,YAAoB,EAAE,aAAa,GAAa,EAAE;IAC9G,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC1B,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY;YAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,MAAM,CAAC,YAAY,OAAO,YAAY,EAAE,EAAE,CAAC;QAC1J,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/G,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB,EAAE,GAAa,EAAE,YAAoB,EAAE,QAAQ,GAAqG,EAAE;IAClN,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAChG,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,YAAY,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,SAAS,EAAE,8BAA8B,CAAC,CAAC;IACtH,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAO,CAAC,KAAK,IAAI,MAAO,CAAC,YAAY,KAAK,YAAY,IAAI,MAAO,CAAC,MAAM,KAAK,QAAQ;WACnH,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,IAAI,MAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,CAAC;WACpF,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,IAAI,MAAO,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,CAAC;WAC1F,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,IAAI,MAAO,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,CAAC;WAC1F,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,IAAI,MAAO,CAAC,aAAa,KAAK,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACjG,IAAI,KAAK;QAAE,MAAM,IAAI,kBAAkB,CAAC,KAAM,CAAC,EAAE,EAAE,gDAAgD,CAAC,CAAC;IACrG,OAAO,KAAyB,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/core/evidence.ts"],"names":[],"mappings":"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"}
@@ -13,10 +13,45 @@ import type { ObjectiveContract, RouteDecision, RouteTask, TrustPreset, Workflow
13
13
  export declare function workflowTierFor(task: RouteTask, route?: Pick<RouteDecision, "routeClass" | "intent" | "reasons">): WorkflowTier;
14
14
  export declare function classifyRoute(task: RouteTask): RouteDecision;
15
15
  export declare function objectiveHash(objective: ObjectiveContract): string;
16
+ /**
17
+ * How a profile may use OMP's read-only `archive` eval prelude.
18
+ *
19
+ * `archive.enabled` is OMP's own setting, default on, and Bizar never writes
20
+ * it: stripping it would be a silent behaviour change to an operator's host.
21
+ * What Bizar owns is whether a managed dispatch may *rely* on it, and that
22
+ * answer is per profile rather than global.
23
+ *
24
+ * - `interactive` is pass-through: the operator's own session keeps full
25
+ * archive context, because removing it would change a capability the
26
+ * operator can already turn off themselves.
27
+ * - `trusted-development` is supported: the same operator, same machine, same
28
+ * history the dispatch could read directly.
29
+ * - The managed and untrusted presets are `context-only`: a managed specialist
30
+ * may read archived material as background, but nothing it reads may satisfy
31
+ * an acceptance criterion. That separation is enforced where it matters —
32
+ * `isCurrentTargetObservation` in `core/evidence.ts` refuses any evidence
33
+ * record sourced from an archive — rather than by hiding the tool.
34
+ */
35
+ export type ArchiveAccess = "pass-through" | "supported" | "context-only";
36
+ export type ArchiveProfile = TrustPreset | "interactive";
37
+ /** Whether archived content may satisfy acceptance for this profile. Never true. */
38
+ export declare const ARCHIVE_IS_NEVER_ACCEPTANCE_EVIDENCE = true;
39
+ export declare function archivePolicy(profile: ArchiveProfile): {
40
+ profile: ArchiveProfile;
41
+ access: ArchiveAccess;
42
+ acceptanceEvidence: "refused";
43
+ reason: string;
44
+ };
16
45
  export declare function trustPolicy(preset: TrustPreset): {
17
46
  allowShell: boolean;
18
47
  managedIsolation: boolean;
19
48
  allowEval: boolean;
20
49
  preset: TrustPreset;
50
+ archive: {
51
+ profile: ArchiveProfile;
52
+ access: ArchiveAccess;
53
+ acceptanceEvidence: "refused";
54
+ reason: string;
55
+ };
21
56
  };
22
57
  //# sourceMappingURL=policies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/core/policies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAe,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4BtH;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC,GAAG,YAAY,CAkB/H;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,CAqB5D;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,CAElE;AAQD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW;gBANE,OAAO;sBAAoB,OAAO;eAAa,OAAO;;EAMZ"}
1
+ {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/core/policies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAe,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4BtH;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC,GAAG,YAAY,CAkB/H;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,CAqB5D;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,CAElE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,WAAW,GAAG,cAAc,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,aAAa,CAAC;AASzD,oFAAoF;AACpF,eAAO,MAAM,oCAAoC,OAAO,CAAC;AAEzD,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG;IACtD,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,kBAAkB,EAAE,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB,CAQA;AAQD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW;gBANE,OAAO;sBAAoB,OAAO;eAAa,OAAO;;;iBAd5F,cAAc;gBACf,aAAa;4BACD,SAAS;gBACrB,MAAM;;EAiB2G"}
@@ -82,10 +82,27 @@ export function classifyRoute(task) {
82
82
  export function objectiveHash(objective) {
83
83
  return hash(JSON.stringify(objective));
84
84
  }
85
+ const archiveAccess = {
86
+ interactive: "pass-through",
87
+ "trusted-development": "supported",
88
+ "restricted-managed": "context-only",
89
+ "untrusted-repository": "context-only",
90
+ };
91
+ /** Whether archived content may satisfy acceptance for this profile. Never true. */
92
+ export const ARCHIVE_IS_NEVER_ACCEPTANCE_EVIDENCE = true;
93
+ export function archivePolicy(profile) {
94
+ const access = archiveAccess[profile];
95
+ return {
96
+ profile,
97
+ access,
98
+ acceptanceEvidence: "refused",
99
+ reason: `OMP's archive prelude is read-only ${access} history. It describes past sessions and prompt history, never the current target tree, so evidence recorded from it is refused (see core/evidence.ts isCurrentTargetObservation).`,
100
+ };
101
+ }
85
102
  const presets = {
86
103
  "trusted-development": { allowShell: true, managedIsolation: false, allowEval: true },
87
104
  "restricted-managed": { allowShell: true, managedIsolation: true, allowEval: false },
88
105
  "untrusted-repository": { allowShell: false, managedIsolation: true, allowEval: false },
89
106
  };
90
- export function trustPolicy(preset) { return { preset, ...presets[preset] }; }
107
+ export function trustPolicy(preset) { return { preset, ...presets[preset], archive: archivePolicy(preset) }; }
91
108
  //# sourceMappingURL=policies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/core/policies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/core/policies.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
package/dist/extension.js CHANGED
@@ -37,7 +37,7 @@ import { readJournalSessionId } from "./omp/session-ownership.js";
37
37
  import { clearOmbHostGeneration, rebindOmbHostGeneration } from "./omp/tmux.js";
38
38
  import { createSessionTitleController, resolveSessionTitleLabel } from "./omp/terminal-title.js";
39
39
  import { bindSession } from "./omp/lifecycle.js";
40
- import { BIZAR_MODEL_ROLE_AGENT_PROMPT, BIZAR_MODEL_ROLE_TOOL, BIZAR_MODEL_ROLES, buildAgentEvaluationRequest, clipOperatorNotice, commitRolePlan, diffCatalog, formatCatalogDelta, formatRoleAssignmentPlan, planBizarModelRoles, planFromRecommendations, recordOf, reviewRoleRecommendations, roleAssignmentRoute, snapshotCatalog, isOpaqueOmniRouteCombo, omniRouteFailureGuidance, } from "./omp/model-role-assignment.js";
40
+ import { BIZAR_MODEL_ROLE_AGENT_PROMPT, BIZAR_MODEL_ROLE_TOOL, BIZAR_MODEL_ROLES, buildAgentEvaluationRequest, catalogDigestOf, clipOperatorNotice, commitRolePlan, diffCatalog, formatCatalogDelta, formatRoleAssignmentPlan, mappingDigest, mintRoleAssignmentGrant, planBizarModelRoles, planFromRecommendations, recordOf, reviewRoleRecommendations, roleAssignmentRoute, ROLE_GRANT_TTL_MS, snapshotCatalog, isOpaqueOmniRouteCombo, omniRouteFailureGuidance, } from "./omp/model-role-assignment.js";
41
41
  import { AGENT_ROLES } from "./omp/model-roles.js";
42
42
  import { loadOmbSettings, recordCatalogObservation } from "./omp/omb-settings.js";
43
43
  import { isRunPhaseActive } from "./core/types.js";
@@ -285,6 +285,8 @@ async function runModelRoleCommand(pi, args, ctx, routeResponses = new Map()) {
285
285
  if (words.includes("health"))
286
286
  return modelRoleHealth(pi, ctx, routeResponses);
287
287
  const previewRequested = words.includes("preview") || words.includes("dry-run") || words.includes("--dry-run");
288
+ // Preview is checked before anything else, so it stays read-only and mints no
289
+ // write authority regardless of what else was asked for.
288
290
  if (previewRequested)
289
291
  return previewModelRoles(ctx);
290
292
  // OMP 18.2.6 exposes the authenticated catalog directly, but an extension
@@ -317,19 +319,38 @@ async function runModelRoleCommand(pi, args, ctx, routeResponses = new Map()) {
317
319
  const recorded = recordCatalogObservation(snapshot);
318
320
  const observationNote = recorded.ok ? "" : `\nCatalog observation not recorded: ${recorded.reason}`;
319
321
  if (route.kind === "local-plan") {
322
+ // The operator's own command is the authority on this route; no model is in
323
+ // the loop, so there is no authorization to mint.
320
324
  return `${commitRolePlan({
321
325
  settings: route.settings,
322
326
  resolve: selector => ctx.models?.resolve?.(selector),
323
327
  plan: baseline,
324
328
  delta,
325
329
  source: "deterministic scoring; native request handoff unavailable",
330
+ models: route.models,
331
+ authorization: { operatorCommand: true },
326
332
  })}${observationNote}`;
327
333
  }
334
+ // A013: the agent route is the only one a model can complete, so this is the
335
+ // only route that needs an explicit operator authorization. It is minted
336
+ // here, bound to this session and to the catalog and mapping the operator just
337
+ // reviewed, and echoed to the agent so it is the only thing that can write.
338
+ const sessionId = mainSessionId(ctx);
339
+ if (!sessionId) {
340
+ throw new ContractError("Model-role authorization requires an identified OMP main session; the agent route is refused rather than handed a distribution with no operator authority.");
341
+ }
342
+ const currentRoles = recordOf(route.settings.get("modelRoles"));
343
+ const token = mintRoleAssignmentGrant({
344
+ sessionId,
345
+ catalogDigest: catalogDigestOf(route.models),
346
+ mappingDigest: mappingDigest(currentRoles),
347
+ });
328
348
  route.send(buildAgentEvaluationRequest({
329
349
  models: route.models,
330
- currentRoles: recordOf(route.settings.get("modelRoles")),
350
+ currentRoles,
331
351
  baseline,
332
352
  delta,
353
+ authorization: token,
333
354
  }));
334
355
  const assigned = baseline.assignments.map(({ role, selector }) => `${role}=${selector}`).join(", ");
335
356
  const unresolved = baseline.unavailable.length > 0
@@ -341,8 +362,8 @@ async function runModelRoleCommand(pi, args, ctx, routeResponses = new Map()) {
341
362
  const leftUnchanged = unchanged.length > 0 ? ` Left unchanged until the decision lands: ${unchanged.join(", ")}.` : "";
342
363
  return [
343
364
  formatCatalogDelta(delta),
344
- `Re-evaluated ${Object.keys(BIZAR_MODEL_ROLES).length} Bizar roles against ${route.models.length} live models, including roles that already hold a value.`,
345
- `The distribution request was sent for evaluation and will be persisted through ${BIZAR_MODEL_ROLE_TOOL}. Deterministic baseline: ${assigned}.${unresolved}${leftUnchanged}`,
365
+ `Authorized one ${BIZAR_MODEL_ROLE_TOOL} call for this session, covering ${Object.keys(BIZAR_MODEL_ROLES).length} Bizar roles, for ${ROLE_GRANT_TTL_MS / 60000} minutes. The agent holds the single-use token and may not apply anything else, in another session, or after it expires.`,
366
+ `Re-evaluated ${Object.keys(BIZAR_MODEL_ROLES).length} Bizar roles against ${route.models.length} live models, including roles that already hold a value. Deterministic baseline: ${assigned}.${unresolved}${leftUnchanged}`,
346
367
  ].join("\n") + observationNote;
347
368
  }
348
369
  const runVerificationWithSignal = runVerification;
@@ -376,6 +397,29 @@ function appendUserIdentityInvariant(systemPrompt) {
376
397
  * Universal Bizar OMP invariants injected into every session (main and task children).
377
398
  */
378
399
  const BIZAR_INVARIANTS = "BizarHarness OMP is installed. Use the native bizar-omp skill for Bizar's ownership boundaries, adaptive workflow tiers, workflow/evidence tools, model-role command, and omp-versus-omb launcher contract. Focused work is direct with targeted proof; bounded work uses a lightweight Bizar workflow with acceptance and targeted checks; full work uses planning, isolation, evidence, review, and serialized integration. The native OMP Advisor is off by default for OMB performance and may provide passive independent review when the operator enables it; incorporate useful concerns without creating a second orchestration runtime. Before acting on a todo that asks to commit or push, check the working tree and upstream Git state. When `git status --short` is empty and `git rev-parse HEAD` matches the relevant upstream branch, complete the satisfied commit/push todo items with the native todo tool and continue; do not create a duplicate commit, push, or prompt for either action. If a task or spawn fails immediately with `No model selected`, OMP could not resolve a model for the session; the brief is never the cause and retrying cannot help. You have no tool that selects a model, so do not retry, do not try another route, and do not ask the user to restate the task. Report it once, name `No model selected`, and stop; the operator resolves it with `/model` or by restoring the provider key. Bizar defines semantic roles only and never overrides the operator model choice.";
400
+ /**
401
+ * Archive scoping, stated to the model rather than enforced by hiding a tool.
402
+ *
403
+ * OMP's read-only `archive` prelude (prompt history, recent projects, past
404
+ * sessions, recaps) stays available in every profile — it is the operator's
405
+ * setting and this extension does not rewrite it. What the model must know is
406
+ * that reading it produces context, never proof: Bizar refuses any evidence
407
+ * record sourced from an archive, so a result quoted out of last week's
408
+ * transcript cannot satisfy a criterion however confident it reads.
409
+ */
410
+ const ARCHIVE_SCOPING_INVARIANT = "OMP's read-only `archive` prelude (prompt history, recent projects, past sessions, recaps) is available but is context, never evidence: it describes past sessions, not the current target tree. Use it to recover earlier work when asked. Never cite archived output as proof that a check passed, and never record it through `bizar_verify` or `bizar_candidate_verify` — evidence sourced from an archive is refused at acceptance.";
411
+ function appendArchiveScoping(systemPrompt) {
412
+ if (typeof systemPrompt === "string") {
413
+ return systemPrompt.includes(ARCHIVE_SCOPING_INVARIANT) ? systemPrompt : `${systemPrompt}\n\n${ARCHIVE_SCOPING_INVARIANT}`;
414
+ }
415
+ if (Array.isArray(systemPrompt)) {
416
+ const prompts = systemPrompt.map(String);
417
+ return prompts.some(prompt => prompt.includes(ARCHIVE_SCOPING_INVARIANT))
418
+ ? prompts
419
+ : [...prompts, ARCHIVE_SCOPING_INVARIANT];
420
+ }
421
+ return [ARCHIVE_SCOPING_INVARIANT];
422
+ }
379
423
  /**
380
424
  * Orchestrator-only role assertion and delegation guidance. Applied only after an
381
425
  * operator explicitly activates the main orchestrator role via `bizar_apply_main_orchestrator_role`.
@@ -637,9 +681,9 @@ export default function bizarExtension(pi) {
637
681
  const systemPrompt = paramsOf(event).systemPrompt;
638
682
  const active = orchestratorSessionId !== undefined && orchestratorSessionId === sessionId;
639
683
  return {
640
- systemPrompt: appendUserIdentityInvariant(active
684
+ systemPrompt: appendUserIdentityInvariant(appendArchiveScoping(active
641
685
  ? applyOrchestratorPolicy(appendBizarInvariant(systemPrompt))
642
- : appendBizarInvariant(removeOrchestratorPolicy(systemPrompt))),
686
+ : appendBizarInvariant(removeOrchestratorPolicy(systemPrompt)))),
643
687
  };
644
688
  });
645
689
  pi.on("agent_end", (event, ctx) => {
@@ -1283,14 +1327,15 @@ export default function bizarExtension(pi) {
1283
1327
  },
1284
1328
  });
1285
1329
  pi.registerTool({
1286
- name: "bizar_capabilities", label: "Bizar Native Capabilities", description: "Report native qualification honestly; registration is not end-to-end managed qualification.",
1330
+ name: "bizar_capabilities", label: "Bizar Native Capabilities", description: "Report native qualification honestly; registration is not end-to-end managed qualification. Also reports each packaged specialist's requested/active/unavailable tool roster against the qualified OMP, plus any drift between OMP's built-in registry and Bizar's reviewed profiles.",
1287
1331
  parameters: pi.zod.object({}),
1288
1332
  async execute() { return result(capabilityReport({ extensionLoaded: true })); },
1289
1333
  });
1290
1334
  pi.registerTool({
1291
1335
  name: BIZAR_MODEL_ROLE_TOOL, label: "Bizar Apply Model Roles",
1292
- description: "Validate a proposed Bizar model-role distribution against the live OMP catalog and persist it atomically; the whole mapping is refused when any selector is not a resolvable catalog entry, and a selector that only differs in casing is stored under the catalog's spelling.",
1336
+ description: "Validate a proposed Bizar model-role distribution against the live OMP catalog and persist it atomically. Requires the single-use authorization token /bizar-models issues for this session: a missing, forged, expired, replayed, cross-session, or stale token writes nothing. The whole mapping is refused when any selector is not a resolvable catalog entry, and a selector that only differs in casing is stored under the catalog's spelling.",
1293
1337
  parameters: pi.zod.object({
1338
+ authorization: pi.zod.string().optional(),
1294
1339
  assignment: pi.zod.array(pi.zod.object({
1295
1340
  role: pi.zod.string(),
1296
1341
  selector: pi.zod.string(),
@@ -1321,6 +1366,8 @@ export default function bizarExtension(pi) {
1321
1366
  plan: planFromRecommendations(review, host.models),
1322
1367
  delta: diffCatalog(loadOmbSettings().modelCatalog, snapshot),
1323
1368
  source: "catalog-evaluated distribution",
1369
+ models: host.models,
1370
+ authorization: { token: paramsOf(raw).authorization, sessionId: mainSessionId(ctx) },
1324
1371
  });
1325
1372
  // A recommendation that only differed in casing is stored under the
1326
1373
  // catalog's own spelling; the repair is reported so the persisted mapping