overlord-cli 0.2611091052.0 → 0.2611131332.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.
package/README.md CHANGED
@@ -250,7 +250,7 @@ resolved project directory. The queue state remains in the backend.
250
250
  ### Contract Components
251
251
 
252
252
  This module is the developer-facing home for three components defined in
253
- [`CONTRACT.md`](https://github.com/cooperativ-labs/OpenOverlord/blob/main/CONTRACT.md):
253
+ [`contract/CONTRACT.md`](https://github.com/cooperativ-labs/OpenOverlord/blob/main/contract/CONTRACT.md):
254
254
 
255
255
  | Component | Stable id | What it owns |
256
256
  | -------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -345,5 +345,5 @@ would run untested working-tree code against your real mission data.
345
345
 
346
346
  Per the contract, the CLI/protocol/runner surfaces reach persistence only
347
347
  through the configured **REST/backend API** — never direct table writes.
348
- See the Interaction Surfaces section of [`CONTRACT.md`](https://github.com/cooperativ-labs/OpenOverlord/blob/main/CONTRACT.md) before
348
+ See the Interaction Surfaces section of [`contract/architecture.md`](https://github.com/cooperativ-labs/OpenOverlord/blob/main/contract/architecture.md) before
349
349
  making any cross-module change.
@@ -1,6 +1,6 @@
1
1
  # Connectors Module — Agent Extension Guide
2
2
 
3
- This file tells agents how to extend the Connectors module to add new agent harness connectors for users. Read [`CONTRACT.md`](../CONTRACT.md) and the [component-contract skill](../.claude/skills/component-contract/SKILL.md) before making any cross-module change.
3
+ This file tells agents how to extend the Connectors module to add new agent harness connectors for users. Read [`contract/CONTRACT.md`](../contract/CONTRACT.md) and the [component-contract skill](../.claude/skills/component-contract/SKILL.md) before making any cross-module change.
4
4
 
5
5
  ---
6
6
 
@@ -21,7 +21,7 @@ Each type has a different procedure below.
21
21
 
22
22
  ## Before You Start
23
23
 
24
- 1. Read `CONTRACT.md` — Connector Layer section (stable id: `connector`).
24
+ 1. Read `contract/architecture.md` — Connector Layer section (stable id: `connector`).
25
25
  2. Read [`connectors/docs/05-connectors-and-agent-plugins.md`](docs/05-connectors-and-agent-plugins.md) for the four-layer model: connector core, plugins, adapters, and prompt wrappers.
26
26
  3. Read [`connectors/docs/agent-harness-configuration-architecture.md`](docs/agent-harness-configuration-architecture.md) for ownership boundaries.
27
27
  4. Check the `agentSession` vocabularies in `contract/extension-points.yaml` and the descriptor schema before adding a normalized capability, integration shape, or fixture kind.
@@ -266,7 +266,7 @@ wrong and that is worth raising rather than working around.
266
266
  6. **Create `connectors/adapters/<agent-name>/conformance-manifest.yaml`** declaring:
267
267
 
268
268
  ```yaml
269
- contractVersion: '116'
269
+ contractVersion: '168.0.0'
270
270
  componentType: connector
271
271
  componentKey: <agent-name>
272
272
  label: <human-readable label>
@@ -350,7 +350,7 @@ The Claude and Codex adapters are the reference implementations; Cursor, Pi, Ant
350
350
 
351
351
  ## Cross-Module Checklist
352
352
 
353
- - [ ] Read `CONTRACT.md` Connector Layer section
353
+ - [ ] Read `contract/architecture.md` Connector Layer section
354
354
  - [ ] New capability id, integration shape, or fixture kind → update the contract vocabulary and descriptor schema first
355
355
  - [ ] Hook scripts → use `ovld protocol` commands only, no direct DB writes
356
356
  - [ ] Conformance manifest created and validated for every new connector
@@ -59,14 +59,14 @@ migrate existing installations.
59
59
 
60
60
  A custom agent connector is a sanctioned extension point: a new adapter plus a
61
61
  `conformance-manifest.yaml` validated by `ovld contract check`. See the
62
- [Conformance Requirements](../CONTRACT.md) and the example manifest at
62
+ [Conformance Requirements](../contract/conformance.md) and the example manifest at
63
63
  [`../contract/examples/connector-claude-conformance-manifest.yaml`](../contract/examples/connector-claude-conformance-manifest.yaml).
64
64
 
65
65
  ## For Developers
66
66
 
67
67
  ### Contract Component
68
68
 
69
- Maps to the **Connector Layer** (`connector`) in [`CONTRACT.md`](../CONTRACT.md), which owns:
69
+ Maps to the **Connector Layer** (`connector`) in [`contract/architecture.md`](../contract/architecture.md), which owns:
70
70
 
71
71
  - Connector core workflow instructions
72
72
  - Per-agent plugin/adapter files and their managed-file manifests
@@ -1,4 +1,4 @@
1
- contractVersion: "168"
1
+ contractVersion: "169.2.1"
2
2
  componentType: connector
3
3
  componentKey: antigravity
4
4
  label: "Antigravity Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "168"
1
+ contractVersion: "169.2.1"
2
2
  componentType: connector
3
3
  componentKey: claude
4
4
  label: "Claude Code Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "168"
1
+ contractVersion: "169.2.1"
2
2
  componentType: connector
3
3
  componentKey: codex
4
4
  label: "Codex Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "168"
1
+ contractVersion: "169.2.1"
2
2
  componentType: connector
3
3
  componentKey: cursor
4
4
  label: "Cursor Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "168"
1
+ contractVersion: "169.2.1"
2
2
  componentType: connector
3
3
  componentKey: opencode
4
4
  label: "OpenCode Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "168"
1
+ contractVersion: "169.2.1"
2
2
  componentType: connector
3
3
  componentKey: pi
4
4
  label: "PI Connector"
@@ -28,9 +28,15 @@ properties:
28
28
 
29
29
  contractVersion:
30
30
  type: string
31
- description: "The Overlord contract version this component was validated against (e.g. '0')"
31
+ # Strict MAJOR.MINOR.PATCH (contract/VERSION). A bare integer N is the former
32
+ # integer form, read as N.0.0, and stays valid for manifests outside this
33
+ # repository until they are restamped; `yarn check:conformance-versions`
34
+ # requires the strict form, the same major as contract/VERSION and a version
35
+ # not newer than it (contract/decisions/0009-manifests-pin-major-version.md).
36
+ pattern: "^(0|[1-9][0-9]*)([.](0|[1-9][0-9]*)[.](0|[1-9][0-9]*))?$"
37
+ description: "The Overlord contract version this component was validated against, as strict Semantic Versioning (e.g. '168.0.0')"
32
38
  examples:
33
- - "0"
39
+ - "168.0.0"
34
40
 
35
41
  componentType:
36
42
  type: string
@@ -177,7 +183,7 @@ properties:
177
183
  - postgres
178
184
  schemaContractVersion:
179
185
  type: string
180
- description: "Database schema contract version this adapter implements (from 09-database-schema-contract.md)"
186
+ description: "Database schema contract version this adapter implements (from contract/data/README.md)"
181
187
  conformanceTestStatus:
182
188
  type: string
183
189
  enum:
package/dist/index.js CHANGED
@@ -634,11 +634,22 @@ var init_base_url = __esm({
634
634
  }
635
635
  });
636
636
 
637
+ // ../packages/contract/dist/vocabulary.js
638
+ function vocabulary() {
639
+ return (values) => values;
640
+ }
641
+ var init_vocabulary = __esm({
642
+ "../packages/contract/dist/vocabulary.js"() {
643
+ "use strict";
644
+ }
645
+ });
646
+
637
647
  // ../packages/contract/dist/chat.js
638
- var CHAT_DEFAULT_LIMITS, REPOSITORY_READ_DEFAULT_BOUNDS;
648
+ var CHAT_DEFAULT_LIMITS, ACCOUNT_CONNECTION_PROVIDERS, ACCOUNT_CONNECTION_SCOPES, ACCOUNT_CONNECTION_CREDENTIAL_KINDS, ACCOUNT_CONNECTION_STATES, ACCOUNT_CONNECTION_ASSISTANT_WRITE_SCOPES, ACCOUNT_CONNECTION_UNAVAILABLE_REASONS, REPOSITORY_READ_OPERATIONS, REPOSITORY_READ_DEFAULT_BOUNDS;
639
649
  var init_chat = __esm({
640
650
  "../packages/contract/dist/chat.js"() {
641
651
  "use strict";
652
+ init_vocabulary();
642
653
  CHAT_DEFAULT_LIMITS = {
643
654
  /** Fixed invariant, not configurable. */
644
655
  unfinishedRunsPerThread: 1,
@@ -660,6 +671,41 @@ var init_chat = __esm({
660
671
  titleMaxChars: 80,
661
672
  messageMaxChars: 16e3
662
673
  };
674
+ ACCOUNT_CONNECTION_PROVIDERS = vocabulary()([
675
+ "knowledgebase",
676
+ "everhour",
677
+ "github"
678
+ ]);
679
+ ACCOUNT_CONNECTION_SCOPES = vocabulary()([
680
+ "organization",
681
+ "profile"
682
+ ]);
683
+ ACCOUNT_CONNECTION_CREDENTIAL_KINDS = vocabulary()([
684
+ "oauth",
685
+ "api_key"
686
+ ]);
687
+ ACCOUNT_CONNECTION_STATES = vocabulary()([
688
+ "pending",
689
+ "connected",
690
+ "reauthorization_required",
691
+ "disconnected"
692
+ ]);
693
+ ACCOUNT_CONNECTION_ASSISTANT_WRITE_SCOPES = vocabulary()(["per_request", "all_workspaces"]);
694
+ ACCOUNT_CONNECTION_UNAVAILABLE_REASONS = vocabulary()([
695
+ "not_offered_on_edition",
696
+ "not_configured",
697
+ "encryption_not_configured"
698
+ ]);
699
+ REPOSITORY_READ_OPERATIONS = vocabulary()([
700
+ "observe",
701
+ "tree",
702
+ "branches",
703
+ "worktrees",
704
+ "git_status",
705
+ "diff",
706
+ "read_file",
707
+ "search_text"
708
+ ]);
663
709
  REPOSITORY_READ_DEFAULT_BOUNDS = {
664
710
  readFileBytes: 64 * 1024,
665
711
  diffBytes: 128 * 1024,
@@ -793,16 +839,39 @@ var init_mission_reference = __esm({
793
839
  });
794
840
 
795
841
  // ../packages/contract/dist/mission-search.js
842
+ var MISSION_SEARCH_DATE_FIELDS;
796
843
  var init_mission_search = __esm({
797
844
  "../packages/contract/dist/mission-search.js"() {
798
845
  "use strict";
846
+ init_vocabulary();
847
+ MISSION_SEARCH_DATE_FIELDS = vocabulary()([
848
+ "createdAt",
849
+ "updatedAt",
850
+ "dueDatetime"
851
+ ]);
799
852
  }
800
853
  });
801
854
 
802
855
  // ../packages/contract/dist/notifications.js
856
+ var NOTIFICATION_TYPES, NOTIFICATION_MODES, NOTIFICATION_TRANSPORTS;
803
857
  var init_notifications = __esm({
804
858
  "../packages/contract/dist/notifications.js"() {
805
859
  "use strict";
860
+ init_vocabulary();
861
+ NOTIFICATION_TYPES = vocabulary()([
862
+ "mission_awaiting_review",
863
+ "agent_question",
864
+ "mission_complete",
865
+ "mission_failed",
866
+ "agent_started",
867
+ "returned_to_execute"
868
+ ]);
869
+ NOTIFICATION_MODES = vocabulary()(["alert", "silent", "off"]);
870
+ NOTIFICATION_TRANSPORTS = vocabulary()([
871
+ "apns",
872
+ "realtime",
873
+ "in_app"
874
+ ]);
806
875
  }
807
876
  });
808
877
 
@@ -919,6 +988,7 @@ var init_dist = __esm({
919
988
  init_objective_ref();
920
989
  init_resource_paths();
921
990
  init_search();
991
+ init_vocabulary();
922
992
  DEFERRED_WORK_LIMITS = {
923
993
  maxTitleLength: 80,
924
994
  maxChangeLength: 400,
@@ -2959,8 +3029,10 @@ var init_connector_core_render = __esm({
2959
3029
  // src/connectors.ts
2960
3030
  var connectors_exports = {};
2961
3031
  __export(connectors_exports, {
3032
+ contractMajorVersion: () => contractMajorVersion,
2962
3033
  expandInstallPath: () => expandInstallPath,
2963
3034
  inspectConnector: () => inspectConnector,
3035
+ isStaleContractVersion: () => isStaleContractVersion,
2964
3036
  listAvailableConnectors: () => listAvailableConnectors,
2965
3037
  mergeCodexConfig: () => mergeCodexConfig,
2966
3038
  parseConnectorManifestYaml: () => parseConnectorManifestYaml,
@@ -3655,6 +3727,19 @@ function readInstallState(agentKey, home) {
3655
3727
  return null;
3656
3728
  }
3657
3729
  }
3730
+ function contractMajorVersion(version2) {
3731
+ const match = /^(0|[1-9]\d*)(?:\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*))?$/.exec(version2.trim());
3732
+ return match ? match[1] : void 0;
3733
+ }
3734
+ function isStaleContractVersion({
3735
+ installed,
3736
+ declared
3737
+ }) {
3738
+ const installedMajor = contractMajorVersion(installed);
3739
+ const declaredMajor = contractMajorVersion(declared);
3740
+ if (installedMajor === void 0 || declaredMajor === void 0) return installed !== declared;
3741
+ return installedMajor !== declaredMajor;
3742
+ }
3658
3743
  function inspectConnector({
3659
3744
  agentKey,
3660
3745
  home
@@ -3677,7 +3762,10 @@ function inspectConnector({
3677
3762
  };
3678
3763
  }
3679
3764
  const problems = [];
3680
- const staleContractVersion = state.contractVersion !== manifest.contractVersion;
3765
+ const staleContractVersion = isStaleContractVersion({
3766
+ installed: state.contractVersion,
3767
+ declared: manifest.contractVersion
3768
+ });
3681
3769
  if (staleContractVersion) {
3682
3770
  problems.push(
3683
3771
  `Installed against contract ${state.contractVersion}; connector now declares ${manifest.contractVersion}. Re-run \`ovld agent-setup ${agentKey}\`.`
@@ -42334,12 +42422,21 @@ var init_delivery_report = __esm({
42334
42422
  });
42335
42423
 
42336
42424
  // ../packages/core/dist/service/webhook-events.js
42425
+ var WEBHOOK_EVENT_TYPES;
42337
42426
  var init_webhook_events = __esm({
42338
42427
  "../packages/core/dist/service/webhook-events.js"() {
42339
42428
  "use strict";
42429
+ init_dist();
42340
42430
  init_dist2();
42341
42431
  init_delivery_report();
42342
42432
  init_util2();
42433
+ WEBHOOK_EVENT_TYPES = vocabulary()([
42434
+ "mission.delivered",
42435
+ "mission.status_changed",
42436
+ "objective.completed",
42437
+ "mission.blocked",
42438
+ "mission.unblocked"
42439
+ ]);
42343
42440
  }
42344
42441
  });
42345
42442
 
@@ -42362,10 +42459,11 @@ var init_credential = __esm({
42362
42459
  });
42363
42460
 
42364
42461
  // ../packages/core/dist/service/agent-session/requests.js
42365
- var REMOTE_WINDOW_AWAY_SECONDS;
42462
+ var REMOTE_WINDOW_AWAY_SECONDS, AGENT_REQUEST_KINDS;
42366
42463
  var init_requests = __esm({
42367
42464
  "../packages/core/dist/service/agent-session/requests.js"() {
42368
42465
  "use strict";
42466
+ init_dist();
42369
42467
  init_change_feed();
42370
42468
  init_errors2();
42371
42469
  init_live_activity_jobs();
@@ -42375,6 +42473,12 @@ var init_requests = __esm({
42375
42473
  init_window();
42376
42474
  init_credential();
42377
42475
  REMOTE_WINDOW_AWAY_SECONDS = 30 * 60;
42476
+ AGENT_REQUEST_KINDS = vocabulary()([
42477
+ "question",
42478
+ "permission",
42479
+ "choice",
42480
+ "retry"
42481
+ ]);
42378
42482
  }
42379
42483
  });
42380
42484