@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.
@@ -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,4 @@
1
+ interface:
2
+ display_name: "Oversee Fleet Agents"
3
+ short_description: "Monitor and unstick spawned fleet agents"
4
+ default_prompt: "Use $oversee-agents to watch and assist my fleet roles."
@@ -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.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Spawn ours Agent"
3
+ short_description: "Create a persistent or temporary fleet agent"
4
+ default_prompt: "Use $spawn-ours-agent to create a new Codex fleet role."