@ours.network/fleet-codex 0.1.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/.codex-plugin/plugin.json +29 -0
- package/LICENSE +98 -0
- package/README.md +24 -0
- package/bin/ours-fleet-codex-install.mjs +31 -0
- package/package.json +24 -0
- package/skills/oversee-agents/SKILL.md +59 -0
- package/skills/oversee-agents/agents/openai.yaml +4 -0
- package/skills/spawn-ours-agent/SKILL.md +100 -0
- package/skills/spawn-ours-agent/agents/openai.yaml +4 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ours-fleet",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Spawn, configure, and oversee ours-fleet roles from OpenAI Codex.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Adapt Framework Solutions Ltd",
|
|
7
|
+
"url": "https://ours.network"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/adapt-toolkit/ours-fleet/tree/main/integrations/codex/ours-fleet",
|
|
10
|
+
"repository": "https://github.com/adapt-toolkit/ours-fleet",
|
|
11
|
+
"license": "FSL-1.1-Apache-2.0",
|
|
12
|
+
"keywords": ["codex", "ours.network", "fleet", "agents", "spawn", "oversight"],
|
|
13
|
+
"skills": "./skills/",
|
|
14
|
+
"interface": {
|
|
15
|
+
"displayName": "ours.network Fleet",
|
|
16
|
+
"shortDescription": "Spawn and oversee persistent Codex agents",
|
|
17
|
+
"longDescription": "Create temporary or supervised ours-fleet roles, configure Codex models and permissions, and keep spawned agents healthy from inside Codex.",
|
|
18
|
+
"developerName": "Adapt Framework Solutions Ltd",
|
|
19
|
+
"category": "Productivity",
|
|
20
|
+
"capabilities": ["Interactive", "Read", "Write"],
|
|
21
|
+
"websiteURL": "https://ours.network",
|
|
22
|
+
"defaultPrompt": [
|
|
23
|
+
"Spawn a new Codex fleet agent for this task.",
|
|
24
|
+
"Show me the status of my fleet roles.",
|
|
25
|
+
"Keep an eye on the agents I spawned."
|
|
26
|
+
],
|
|
27
|
+
"brandColor": "#6D5EF5"
|
|
28
|
+
}
|
|
29
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Functional Source License, Version 1.1, Apache 2.0 Future License
|
|
2
|
+
|
|
3
|
+
## Abbreviation
|
|
4
|
+
|
|
5
|
+
FSL-1.1-Apache-2.0
|
|
6
|
+
|
|
7
|
+
## Notice
|
|
8
|
+
|
|
9
|
+
Copyright 2026 Adapt Framework Solutions Ltd
|
|
10
|
+
|
|
11
|
+
## Terms and Conditions
|
|
12
|
+
|
|
13
|
+
### Licensor ("We")
|
|
14
|
+
|
|
15
|
+
The party offering the Software under these Terms and Conditions.
|
|
16
|
+
|
|
17
|
+
### The Software
|
|
18
|
+
|
|
19
|
+
The "Software" is each version of the software that we make available under
|
|
20
|
+
these Terms and Conditions, as indicated by our inclusion of these Terms and
|
|
21
|
+
Conditions with the Software.
|
|
22
|
+
|
|
23
|
+
### License Grant
|
|
24
|
+
|
|
25
|
+
Subject to your compliance with this License Grant and the Patents,
|
|
26
|
+
Redistribution and Trademark clauses below, we hereby grant you the right to use,
|
|
27
|
+
copy, modify, create derivative works, publicly perform, publicly display and
|
|
28
|
+
redistribute the Software for any Permitted Purpose identified below.
|
|
29
|
+
|
|
30
|
+
### Permitted Purpose
|
|
31
|
+
|
|
32
|
+
A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
|
|
33
|
+
means making the Software available to others in a commercial product or service
|
|
34
|
+
that:
|
|
35
|
+
|
|
36
|
+
1. substitutes for the Software;
|
|
37
|
+
|
|
38
|
+
2. substitutes for any other product or service we offer using the Software that
|
|
39
|
+
exists as of the date we make the Software available; or
|
|
40
|
+
|
|
41
|
+
3. offers the same or substantially similar functionality as the Software.
|
|
42
|
+
|
|
43
|
+
Permitted Purposes specifically include using the Software:
|
|
44
|
+
|
|
45
|
+
1. for your internal use and access;
|
|
46
|
+
|
|
47
|
+
2. for non-commercial education;
|
|
48
|
+
|
|
49
|
+
3. for non-commercial research; and
|
|
50
|
+
|
|
51
|
+
4. in connection with professional services that you provide to a licensee using
|
|
52
|
+
the Software in accordance with these Terms and Conditions.
|
|
53
|
+
|
|
54
|
+
### Patents
|
|
55
|
+
|
|
56
|
+
To the extent your use for a Permitted Purpose would necessarily infringe our
|
|
57
|
+
patents, the license grant above includes a license under our patents. If you
|
|
58
|
+
make a claim against any party that the Software infringes or contributes to the
|
|
59
|
+
infringement of any patent, then your patent license to the Software ends
|
|
60
|
+
immediately.
|
|
61
|
+
|
|
62
|
+
### Redistribution
|
|
63
|
+
|
|
64
|
+
The Terms and Conditions apply to all copies, modifications and derivatives of
|
|
65
|
+
the Software.
|
|
66
|
+
|
|
67
|
+
If you redistribute any copies, modifications or derivatives of the Software, you
|
|
68
|
+
must include a copy of or a link to these Terms and Conditions and not remove any
|
|
69
|
+
copyright notices provided in or with the Software.
|
|
70
|
+
|
|
71
|
+
### Disclaimer
|
|
72
|
+
|
|
73
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, INCLUDING
|
|
74
|
+
WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
|
75
|
+
PURPOSE, NON-INFRINGEMENT, OR THAT THE SOFTWARE IS FREE OF DEFECTS. IN NO EVENT
|
|
76
|
+
WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE SOFTWARE,
|
|
77
|
+
INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF WE HAVE
|
|
78
|
+
BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
|
|
79
|
+
|
|
80
|
+
### Grant of Future License
|
|
81
|
+
|
|
82
|
+
We hereby irrevocably grant you an additional license to use the Software under
|
|
83
|
+
the Apache License, Version 2.0 that is effective on the second anniversary of
|
|
84
|
+
the date we make the Software available. On or after that date, you may use the
|
|
85
|
+
Software under the Apache License, Version 2.0, in which case the following will
|
|
86
|
+
apply:
|
|
87
|
+
|
|
88
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
89
|
+
this file except in compliance with the License.
|
|
90
|
+
|
|
91
|
+
You may obtain a copy of the License at
|
|
92
|
+
|
|
93
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
94
|
+
|
|
95
|
+
Unless required by applicable law or agreed to in writing, software distributed
|
|
96
|
+
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
97
|
+
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
98
|
+
specific language governing permissions and limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# @ours.network/fleet-codex
|
|
2
|
+
|
|
3
|
+
Native OpenAI Codex plugin for `ours-fleet`. It adds skills for creating Codex
|
|
4
|
+
fleet roles and overseeing agents in their tmux consoles. The
|
|
5
|
+
`@ours.network/fleet` CLI performs the actual lifecycle operations.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
npm install --global @ours.network/fleet-codex
|
|
11
|
+
ours-fleet-codex-install
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The installer ensures `@ours.network/fleet`, `@ours.network/codex`, and the
|
|
15
|
+
native `ours` and `ours-fleet` Codex plugins are installed. Start a new Codex
|
|
16
|
+
session after installation so it discovers the skills.
|
|
17
|
+
|
|
18
|
+
Then ask Codex to “spawn an ours agent”, “create a persistent Codex role”, or
|
|
19
|
+
“keep an eye on my fleet agents”.
|
|
20
|
+
|
|
21
|
+
Codex may ask for one-time authorization before individual ours MCP tools run.
|
|
22
|
+
Mail wake is consent-first: a spawned role receives `--monitor` only when the
|
|
23
|
+
user explicitly requests it. `ours-codex` supplies background wake; native
|
|
24
|
+
`codex` remains the supported foreground-monitor fallback.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawnSync } from 'node:child_process';
|
|
3
|
+
|
|
4
|
+
const run = (command, args, { optional = false } = {}) => {
|
|
5
|
+
const result = spawnSync(command, args, { stdio: 'inherit' });
|
|
6
|
+
if (result.error || result.status !== 0) {
|
|
7
|
+
if (optional) return false;
|
|
8
|
+
const detail = result.error?.message ?? `exit ${result.status}`;
|
|
9
|
+
throw new Error(`${command} ${args.join(' ')} failed (${detail})`);
|
|
10
|
+
}
|
|
11
|
+
return true;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
if (!run('codex', ['--version'], { optional: true }))
|
|
16
|
+
throw new Error('Codex CLI is not installed or not on PATH');
|
|
17
|
+
|
|
18
|
+
console.log('Installing ours-fleet CLI and the ours Codex runtime...');
|
|
19
|
+
run('npm', ['install', '--global', '@ours.network/fleet', '@ours.network/codex']);
|
|
20
|
+
run('ours-codex-install', []);
|
|
21
|
+
|
|
22
|
+
console.log('Installing the ours-fleet native Codex plugin...');
|
|
23
|
+
if (!run('codex', ['plugin', 'marketplace', 'add', 'adapt-toolkit/ours-codex-marketplace'], { optional: true }))
|
|
24
|
+
run('codex', ['plugin', 'marketplace', 'upgrade', 'ours-codex-marketplace']);
|
|
25
|
+
run('codex', ['plugin', 'add', 'ours-fleet@ours-codex-marketplace']);
|
|
26
|
+
|
|
27
|
+
console.log('ours-fleet Codex support installed. Start a new Codex session, then ask: "spawn an ours agent".');
|
|
28
|
+
} catch (error) {
|
|
29
|
+
console.error(`ours-fleet-codex-install: ${error.message}`);
|
|
30
|
+
process.exitCode = 1;
|
|
31
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ours.network/fleet-codex",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Native Codex plugin for spawning, configuring, and overseeing ours-fleet agents.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "FSL-1.1-Apache-2.0",
|
|
7
|
+
"author": "Adapt Framework Solutions Ltd",
|
|
8
|
+
"homepage": "https://github.com/adapt-toolkit/ours-fleet/tree/main/integrations/codex/ours-fleet#readme",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/adapt-toolkit/ours-fleet.git",
|
|
12
|
+
"directory": "integrations/codex/ours-fleet"
|
|
13
|
+
},
|
|
14
|
+
"keywords": ["codex", "openai", "plugin", "fleet", "agents", "spawn", "oversight", "ours.network"],
|
|
15
|
+
"files": [".codex-plugin", "skills", "bin", "README.md", "LICENSE"],
|
|
16
|
+
"bin": {
|
|
17
|
+
"ours-fleet-codex-install": "bin/ours-fleet-codex-install.mjs"
|
|
18
|
+
},
|
|
19
|
+
"engines": { "node": ">=20" },
|
|
20
|
+
"publishConfig": { "access": "public" },
|
|
21
|
+
"scripts": {
|
|
22
|
+
"test": "node --test"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oversee-agents
|
|
3
|
+
description: Inspect, monitor, and unstick ours-fleet agents from Codex using their tmux consoles and supervisor state. Use when the user asks to keep an eye on agents, oversee spawned roles, check agent status, babysit a subagent, resolve a fleet prompt, or when Codex has just spawned a role and should verify its progress.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Oversee ours-fleet agents
|
|
7
|
+
|
|
8
|
+
Use fleet state and console output as evidence:
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
ours-fleet ls
|
|
12
|
+
ours-fleet peek <Name> [lines]
|
|
13
|
+
ours-fleet status <Name>
|
|
14
|
+
ours-fleet logs <Name>
|
|
15
|
+
ours-fleet send <Name> "<text>"
|
|
16
|
+
ours-fleet send <Name> --key <key>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Establish scope
|
|
20
|
+
|
|
21
|
+
Identify wards from the user's request, the current role briefing, or agents
|
|
22
|
+
just spawned. Confirm the desired check interval when ongoing oversight is
|
|
23
|
+
requested; default to five minutes only after the user agrees.
|
|
24
|
+
|
|
25
|
+
This plugin does not add a timer or Claude Code's generic scheduled background
|
|
26
|
+
monitor. Before promising recurring checks, identify an explicit timer/recurring
|
|
27
|
+
monitor tool that is actually available in the current Codex session. The ours
|
|
28
|
+
mail monitor is event-driven and does not provide five-minute timer wakeups. If
|
|
29
|
+
no real timer tool is present, say that the interval cannot be armed: offer
|
|
30
|
+
active foreground observation or manual checks instead. Never say “I created a
|
|
31
|
+
recurring monitor” based only on this skill. For durable operation, recommend a
|
|
32
|
+
supervised coordinator role and message-driven wake through `ours-codex`, while
|
|
33
|
+
remaining clear that messages—not elapsed time—wake it.
|
|
34
|
+
|
|
35
|
+
## On each check
|
|
36
|
+
|
|
37
|
+
Peek once and classify the evidence:
|
|
38
|
+
|
|
39
|
+
- **Active and progressing:** leave it alone.
|
|
40
|
+
- **Codex MCP authorization prompt:** surface the requested tool and scope.
|
|
41
|
+
Session-only approval is safer for tests; persistent approval requires the
|
|
42
|
+
user's explicit authorization.
|
|
43
|
+
- **Permission or trust dialog:** choose only an option already authorized by
|
|
44
|
+
the role's mission and permission policy.
|
|
45
|
+
- **Question waiting for an absent user:** answer only from known mission
|
|
46
|
+
context; otherwise escalate.
|
|
47
|
+
- **Idle with unfinished work:** ask for status and direct it to continue or
|
|
48
|
+
declare `BLOCKED`.
|
|
49
|
+
- **Crash or shell prompt:** inspect logs, diagnose, then restart permanent
|
|
50
|
+
roles with `ours-fleet restart <Name>` when safe.
|
|
51
|
+
- **Completed temporary role:** report the result and let its supervisor clean
|
|
52
|
+
up; stop checking it.
|
|
53
|
+
|
|
54
|
+
Never approve spending, deletion, publication, credential access, scope
|
|
55
|
+
expansion, `danger-full-access`, or persistent plugin trust on the user's
|
|
56
|
+
behalf. Escalate with the relevant pane snapshot and a concrete recommendation.
|
|
57
|
+
|
|
58
|
+
Append material interventions to the current coordinator's durable worklog when
|
|
59
|
+
one exists. Report the ward, observed state, action taken, and next check.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spawn-ours-agent
|
|
3
|
+
description: Spawn and configure a new ours-fleet agent from Codex, either as a supervised persistent role or a temporary tmux agent. Use when the user asks to spawn an agent, create a fleet role, start a background agent, delegate work to another Codex session, choose its model or permissions, or create a subagent that should have its own ours identity and console.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spawn an ours-fleet agent
|
|
7
|
+
|
|
8
|
+
Use the `ours-fleet` CLI to create the role. Do not simulate a subagent inside
|
|
9
|
+
the current conversation.
|
|
10
|
+
|
|
11
|
+
## 1. Check the host
|
|
12
|
+
|
|
13
|
+
Run:
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
ours-fleet doctor --harness codex
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Stop at a failed required check. Explain that `ours-codex` is preferred for
|
|
20
|
+
background mail wake and native `codex` is the supported fallback.
|
|
21
|
+
|
|
22
|
+
## 2. Resolve the role design
|
|
23
|
+
|
|
24
|
+
Ask only for choices not already supplied:
|
|
25
|
+
|
|
26
|
+
- **Lifetime:** permanent (supervised, restartable, survives reboot) or
|
|
27
|
+
temporary (one tmux session, removed on exit).
|
|
28
|
+
- **Name:** `[A-Za-z0-9_-]+`; confirm it is absent from `ours-fleet config` and
|
|
29
|
+
`ours-fleet ls`.
|
|
30
|
+
- **Mission and working directory.**
|
|
31
|
+
- **Bio:** public 1–3 sentence card describing scope and when peers should
|
|
32
|
+
engage this role.
|
|
33
|
+
- **Persona:** local operating contract covering mandate, quality bar,
|
|
34
|
+
boundaries, and escalation. Use the writing-agent-bios skill when available.
|
|
35
|
+
- **Coordinator:** optionally announce readiness to an existing ours identity.
|
|
36
|
+
- **Mail monitoring:** explicitly ask whether to arm it. Pass `--monitor` only
|
|
37
|
+
after a clear yes. This consent persists in the role configuration.
|
|
38
|
+
|
|
39
|
+
Offer Codex controls when relevant; otherwise use safe defaults:
|
|
40
|
+
|
|
41
|
+
- model: launcher default or `--model <id>`
|
|
42
|
+
- approval: `untrusted`, `on-request`, or `never`
|
|
43
|
+
- sandbox: `read-only`, `workspace-write`, or `danger-full-access`
|
|
44
|
+
- launcher: `auto` (preferred), `ours-codex`, or `codex`
|
|
45
|
+
- profile: `--profile <name>`
|
|
46
|
+
- search: `--search`
|
|
47
|
+
- arbitrary config: repeatable `--codex-config key=value`
|
|
48
|
+
- additional writable roots: repeatable `--add-dir <path>`
|
|
49
|
+
|
|
50
|
+
Default to `--harness codex --launcher auto --sandbox workspace-write
|
|
51
|
+
--permission-mode on-request`. Never select `danger-full-access` or `never`
|
|
52
|
+
without explicit user direction.
|
|
53
|
+
|
|
54
|
+
## 3. Materialize approved profile text
|
|
55
|
+
|
|
56
|
+
Use `apply_patch` to write the approved bio and persona to uniquely named files
|
|
57
|
+
under `/tmp`. Do not interpolate untrusted text into a shell heredoc.
|
|
58
|
+
|
|
59
|
+
## 4. Spawn
|
|
60
|
+
|
|
61
|
+
Build an argument array from the approved choices. Permanent example:
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
ours-fleet spawn Worker --harness codex --launcher auto \
|
|
65
|
+
--mission "Own the worker implementation" --cwd /absolute/project \
|
|
66
|
+
--bio-file /tmp/worker-bio.md --persona-file /tmp/worker-persona.md \
|
|
67
|
+
--sandbox workspace-write --permission-mode on-request \
|
|
68
|
+
--coordinator Coordinator
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Add `--temp` for a temporary role and `--monitor` only after monitoring consent.
|
|
72
|
+
Pass model, profile, search, config, and additional directories exactly as
|
|
73
|
+
approved. Do not persist secrets in `--codex-config` or fleet YAML; use the
|
|
74
|
+
role's `env` configuration for environment-based credentials.
|
|
75
|
+
|
|
76
|
+
## 5. Verify the real session
|
|
77
|
+
|
|
78
|
+
Run:
|
|
79
|
+
|
|
80
|
+
```sh
|
|
81
|
+
ours-fleet peek <Name> 60
|
|
82
|
+
ours-fleet status <Name>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
For a temporary role, status may not have a system service; the tmux console is
|
|
86
|
+
authoritative. Confirm that Codex loaded its briefing and reached identity
|
|
87
|
+
binding. First use can display Codex authorization prompts for ours MCP tools.
|
|
88
|
+
Surface those prompts to the user; do not grant persistent trust without their
|
|
89
|
+
explicit approval. Use `ours-fleet send <Name> --key <choice>` only for the
|
|
90
|
+
authorization scope the user approved.
|
|
91
|
+
|
|
92
|
+
If monitoring was approved, confirm the console reports `arm_monitor` success.
|
|
93
|
+
Under native Codex, expect the role to surface the `ours-codex` recommendation
|
|
94
|
+
before offering the blocking foreground fallback.
|
|
95
|
+
|
|
96
|
+
## 6. Hand off oversight
|
|
97
|
+
|
|
98
|
+
Treat the spawned role as a ward. Use the `oversee-agents` skill for immediate
|
|
99
|
+
checks and interventions. State clearly whether ongoing timed oversight is
|
|
100
|
+
actually armed or still requires manual checks.
|