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 +2 -2
- package/dist/connectors/AGENTS.md +4 -4
- package/dist/connectors/README.md +2 -2
- package/dist/connectors/adapters/antigravity/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/claude/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/codex/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/cursor/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/opencode/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/pi/conformance-manifest.yaml +1 -1
- package/dist/contract/conformance-manifest.schema.yaml +9 -3
- package/dist/index.js +107 -3
- package/dist/index.js.map +4 -4
- package/package.json +1 -1
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 [`
|
|
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 `
|
|
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: '
|
|
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 `
|
|
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](../
|
|
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 [`
|
|
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
|
|
@@ -28,9 +28,15 @@ properties:
|
|
|
28
28
|
|
|
29
29
|
contractVersion:
|
|
30
30
|
type: string
|
|
31
|
-
|
|
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
|
|
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 =
|
|
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
|
|