@a5c-ai/babysitter-codex 0.1.11-staging.e72bed21 → 0.1.11-staging.ee1aa82e
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 +1 -1
- package/README.md +21 -18
- package/assets/logo.png +0 -0
- package/bin/install-shared.js +34 -17
- package/bin/install.js +2 -3
- package/hooks/babysitter-session-start.sh +3 -2
- package/hooks/babysitter-stop-hook.sh +3 -2
- package/hooks/user-prompt-submit.sh +3 -2
- package/hooks.json +3 -3
- package/package.json +5 -4
- package/plugin.lock.json +153 -0
- package/scripts/team-install.js +2 -1
- package/skills/babysit/SKILL.md +2 -0
- package/babysitter.lock.json +0 -18
package/README.md
CHANGED
|
@@ -10,9 +10,10 @@ This package ships a real Codex plugin bundle:
|
|
|
10
10
|
- `hooks/`
|
|
11
11
|
|
|
12
12
|
It still uses the Babysitter SDK CLI and the shared `~/.a5c` process-library
|
|
13
|
-
state.
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
state. Global install writes the plugin bundle to `~/.agents/plugins/babysitter`
|
|
14
|
+
and updates `~/.agents/plugins/marketplace.json` so Codex can load the plugin
|
|
15
|
+
through its marketplace surface. Workspace install continues to materialize a
|
|
16
|
+
workspace-local Codex surface for team setup.
|
|
16
17
|
|
|
17
18
|
## Installation
|
|
18
19
|
|
|
@@ -25,8 +26,8 @@ npm install -g @a5c-ai/babysitter-sdk
|
|
|
25
26
|
clone the repo and install the plugin globally:
|
|
26
27
|
|
|
27
28
|
```bash
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
npx -y @a5c-ai/babysitter-codex install --global
|
|
30
|
+
|
|
30
31
|
codex
|
|
31
32
|
|
|
32
33
|
> /plugins
|
|
@@ -34,6 +35,10 @@ codex
|
|
|
34
35
|
|
|
35
36
|
then navigate to the 'babysitter' entry and select 'Install'.
|
|
36
37
|
|
|
38
|
+
If Codex was already open when you ran `install --global`, start a new thread
|
|
39
|
+
after installing from `/plugins` before expecting `babysitter:*` skills such as
|
|
40
|
+
`$babysitter:babysit` or `$babysitter:call` to appear in the mention picker.
|
|
41
|
+
|
|
37
42
|
## Integration Model
|
|
38
43
|
|
|
39
44
|
The plugin provides:
|
|
@@ -50,9 +55,9 @@ The process library is fetched and bound through the SDK CLI in
|
|
|
50
55
|
|
|
51
56
|
After `install --workspace`, the important files are:
|
|
52
57
|
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
58
|
+
- `.agents/plugins/babysitter/.codex-plugin/plugin.json`
|
|
59
|
+
- `.agents/plugins/babysitter/skills/babysit/SKILL.md`
|
|
60
|
+
- `.agents/plugins/babysitter/hooks.json`
|
|
56
61
|
- `.codex/skills/`
|
|
57
62
|
- `.codex/hooks/`
|
|
58
63
|
- `.codex/hooks.json`
|
|
@@ -67,13 +72,10 @@ Verify the installed plugin bundle:
|
|
|
67
72
|
|
|
68
73
|
```bash
|
|
69
74
|
npm ls -g @a5c-ai/babysitter-codex --depth=0
|
|
70
|
-
test -f ~/.
|
|
71
|
-
test -f ~/.
|
|
72
|
-
test -f ~/.
|
|
73
|
-
test -f ~/.
|
|
74
|
-
test -f ~/.codex/hooks.json
|
|
75
|
-
test -f ~/.codex/hooks/babysitter-stop-hook.sh
|
|
76
|
-
test -f ~/.codex/skills/babysit/SKILL.md
|
|
75
|
+
test -f ~/.agents/plugins/babysitter/.codex-plugin/plugin.json
|
|
76
|
+
test -f ~/.agents/plugins/babysitter/hooks.json
|
|
77
|
+
test -f ~/.agents/plugins/babysitter/hooks/babysitter-stop-hook.sh
|
|
78
|
+
test -f ~/.agents/plugins/babysitter/skills/babysit/SKILL.md
|
|
77
79
|
test -f ~/.agents/plugins/marketplace.json
|
|
78
80
|
```
|
|
79
81
|
|
|
@@ -83,9 +85,10 @@ Verify the active shared process-library binding:
|
|
|
83
85
|
babysitter process-library:active --json
|
|
84
86
|
```
|
|
85
87
|
|
|
86
|
-
On native Windows, Codex
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
On native Windows, Codex hooks require **Codex CLI >= 0.119.0** (released
|
|
89
|
+
2026-04-10, [openai/codex#17268](https://github.com/openai/codex/pull/17268)).
|
|
90
|
+
Older Codex versions silently skipped hook execution on Windows. If hooks do
|
|
91
|
+
not fire after install, run `codex --version` and upgrade if needed.
|
|
89
92
|
|
|
90
93
|
## License
|
|
91
94
|
|
package/assets/logo.png
ADDED
|
Binary file
|
package/bin/install-shared.js
CHANGED
|
@@ -7,6 +7,7 @@ const { spawnSync } = require('child_process');
|
|
|
7
7
|
|
|
8
8
|
const PLUGIN_NAME = 'babysitter';
|
|
9
9
|
const PLUGIN_CATEGORY = 'Coding';
|
|
10
|
+
const LEGACY_MARKETPLACE_PLUGIN_NAMES = ['babysitter-codex'];
|
|
10
11
|
const LEGACY_SKILL_NAMES = [
|
|
11
12
|
'babysit',
|
|
12
13
|
'babysitter-codex',
|
|
@@ -58,12 +59,13 @@ const DEFAULT_MARKETPLACE = {
|
|
|
58
59
|
};
|
|
59
60
|
const PLUGIN_BUNDLE_ENTRIES = [
|
|
60
61
|
'.codex-plugin',
|
|
61
|
-
'.app.json',
|
|
62
62
|
'assets',
|
|
63
63
|
'hooks',
|
|
64
64
|
'hooks.json',
|
|
65
65
|
'skills',
|
|
66
|
-
'
|
|
66
|
+
'.app.json',
|
|
67
|
+
'plugin.lock.json',
|
|
68
|
+
'README.md',
|
|
67
69
|
];
|
|
68
70
|
|
|
69
71
|
function getCodexHome() {
|
|
@@ -88,7 +90,7 @@ function getHomePluginRoot() {
|
|
|
88
90
|
if (process.env.BABYSITTER_CODEX_PLUGIN_DIR) {
|
|
89
91
|
return path.resolve(process.env.BABYSITTER_CODEX_PLUGIN_DIR, PLUGIN_NAME);
|
|
90
92
|
}
|
|
91
|
-
return path.join(
|
|
93
|
+
return path.join(getUserHome(), '.agents', 'plugins', PLUGIN_NAME);
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
function getHomeMarketplacePath() {
|
|
@@ -315,13 +317,21 @@ function ensureExecutable(filePath) {
|
|
|
315
317
|
}
|
|
316
318
|
}
|
|
317
319
|
|
|
320
|
+
function getMarketplaceRootDir(marketplacePath) {
|
|
321
|
+
const pluginsDir = path.dirname(marketplacePath);
|
|
322
|
+
const dotAgentsDir = path.dirname(pluginsDir);
|
|
323
|
+
return path.dirname(dotAgentsDir);
|
|
324
|
+
}
|
|
325
|
+
|
|
318
326
|
function normalizeMarketplaceSourcePath(marketplacePath, pluginSourcePath) {
|
|
319
|
-
let next = pluginSourcePath;
|
|
320
|
-
if (path.isAbsolute(next)) {
|
|
321
|
-
next = path.relative(path.dirname(marketplacePath), next);
|
|
322
|
-
}
|
|
327
|
+
let next = path.relative(getMarketplaceRootDir(marketplacePath), pluginSourcePath);
|
|
323
328
|
next = String(next || '').replace(/\\/g, '/');
|
|
324
|
-
if (!next.
|
|
329
|
+
if (!next || next === '.' || next.startsWith('../')) {
|
|
330
|
+
throw new Error(
|
|
331
|
+
`Plugin source path must live under ${getMarketplaceRootDir(marketplacePath)} so Codex can load it via a ./-prefixed marketplace entry.`,
|
|
332
|
+
);
|
|
333
|
+
}
|
|
334
|
+
if (!next.startsWith('./')) {
|
|
325
335
|
next = `./${next}`;
|
|
326
336
|
}
|
|
327
337
|
return next;
|
|
@@ -347,15 +357,15 @@ function ensureMarketplaceEntry(marketplacePath, pluginSourcePath) {
|
|
|
347
357
|
},
|
|
348
358
|
category: PLUGIN_CATEGORY,
|
|
349
359
|
};
|
|
350
|
-
const existingIndex = Array.isArray(marketplace.plugins)
|
|
351
|
-
? marketplace.plugins.findIndex((entry) => entry && entry.name === PLUGIN_NAME)
|
|
352
|
-
: -1;
|
|
353
360
|
if (!Array.isArray(marketplace.plugins)) {
|
|
354
361
|
marketplace.plugins = [nextEntry];
|
|
355
|
-
} else if (existingIndex >= 0) {
|
|
356
|
-
marketplace.plugins[existingIndex] = nextEntry;
|
|
357
362
|
} else {
|
|
358
|
-
marketplace.plugins.
|
|
363
|
+
const sanitized = marketplace.plugins.filter((entry) => (
|
|
364
|
+
entry &&
|
|
365
|
+
entry.name !== PLUGIN_NAME &&
|
|
366
|
+
!LEGACY_MARKETPLACE_PLUGIN_NAMES.includes(entry.name)
|
|
367
|
+
));
|
|
368
|
+
marketplace.plugins = [...sanitized, nextEntry];
|
|
359
369
|
}
|
|
360
370
|
writeJson(marketplacePath, marketplace);
|
|
361
371
|
return nextEntry;
|
|
@@ -369,7 +379,11 @@ function removeMarketplaceEntry(marketplacePath) {
|
|
|
369
379
|
if (!Array.isArray(marketplace.plugins)) {
|
|
370
380
|
return;
|
|
371
381
|
}
|
|
372
|
-
marketplace.plugins = marketplace.plugins.filter((entry) =>
|
|
382
|
+
marketplace.plugins = marketplace.plugins.filter((entry) => (
|
|
383
|
+
entry &&
|
|
384
|
+
entry.name !== PLUGIN_NAME &&
|
|
385
|
+
!LEGACY_MARKETPLACE_PLUGIN_NAMES.includes(entry.name)
|
|
386
|
+
));
|
|
373
387
|
writeJson(marketplacePath, marketplace);
|
|
374
388
|
}
|
|
375
389
|
|
|
@@ -489,8 +503,11 @@ function warnWindowsHooks() {
|
|
|
489
503
|
if (process.platform !== 'win32') {
|
|
490
504
|
return;
|
|
491
505
|
}
|
|
492
|
-
|
|
493
|
-
|
|
506
|
+
// Codex enabled Windows hooks in v0.119.0 (2026-04-10, openai/codex#17268).
|
|
507
|
+
// Older Codex CLIs still skip hook execution on Windows; warn so users on
|
|
508
|
+
// pinned/older versions know to upgrade.
|
|
509
|
+
console.warn('[babysitter] Note: Codex hooks on Windows require Codex CLI >= 0.119.0.');
|
|
510
|
+
console.warn('[babysitter] If hooks do not fire, run `codex --version` and upgrade if you are below 0.119.0.');
|
|
494
511
|
}
|
|
495
512
|
|
|
496
513
|
module.exports = {
|
package/bin/install.js
CHANGED
|
@@ -9,7 +9,6 @@ const {
|
|
|
9
9
|
getCodexHome,
|
|
10
10
|
getHomeMarketplacePath,
|
|
11
11
|
getHomePluginRoot,
|
|
12
|
-
installCodexSurface,
|
|
13
12
|
mergeCodexConfigFile,
|
|
14
13
|
warnWindowsHooks,
|
|
15
14
|
} = require('./install-shared');
|
|
@@ -27,7 +26,6 @@ function main() {
|
|
|
27
26
|
copyPluginBundle(PACKAGE_ROOT, pluginRoot);
|
|
28
27
|
ensureMarketplaceEntry(marketplacePath, pluginRoot);
|
|
29
28
|
mergeCodexConfigFile(path.join(codexHome, 'config.toml'));
|
|
30
|
-
installCodexSurface(PACKAGE_ROOT, codexHome);
|
|
31
29
|
|
|
32
30
|
const active = ensureGlobalProcessLibrary(PACKAGE_ROOT);
|
|
33
31
|
console.log(`[babysitter] marketplace: ${marketplacePath}`);
|
|
@@ -38,7 +36,8 @@ function main() {
|
|
|
38
36
|
console.log(`[babysitter] process library state: ${active.stateFile}`);
|
|
39
37
|
warnWindowsHooks();
|
|
40
38
|
console.log('[babysitter] Installation complete!');
|
|
41
|
-
console.log('[babysitter] Restart Codex to pick up the installed plugin and config changes
|
|
39
|
+
console.log('[babysitter] Restart Codex to pick up the installed plugin and config changes, then run Codex and install Babysitter from `/plugins`.');
|
|
40
|
+
console.log('[babysitter] If Codex was already open, start a new thread after install before expecting `babysitter:*` skills such as `$babysitter:babysit` or `$babysitter:call` to appear.');
|
|
42
41
|
} catch (err) {
|
|
43
42
|
console.error(`[babysitter] Failed to install plugin: ${err.message}`);
|
|
44
43
|
process.exitCode = 1;
|
|
@@ -3,8 +3,9 @@ set -euo pipefail
|
|
|
3
3
|
|
|
4
4
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
5
|
PLUGIN_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
GLOBAL_ROOT="${BABYSITTER_GLOBAL_STATE_DIR:-$HOME/.a5c}"
|
|
7
|
+
STATE_DIR="${BABYSITTER_STATE_DIR:-${GLOBAL_ROOT}/state}"
|
|
8
|
+
LOG_DIR="${BABYSITTER_LOG_DIR:-${GLOBAL_ROOT}/logs}"
|
|
8
9
|
LOG_FILE="$LOG_DIR/babysitter-session-start-hook.log"
|
|
9
10
|
|
|
10
11
|
export CODEX_PLUGIN_ROOT="${CODEX_PLUGIN_ROOT:-${PLUGIN_ROOT}}"
|
|
@@ -3,8 +3,9 @@ set -euo pipefail
|
|
|
3
3
|
|
|
4
4
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
5
|
PLUGIN_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
GLOBAL_ROOT="${BABYSITTER_GLOBAL_STATE_DIR:-$HOME/.a5c}"
|
|
7
|
+
STATE_DIR="${BABYSITTER_STATE_DIR:-${GLOBAL_ROOT}/state}"
|
|
8
|
+
LOG_DIR="${BABYSITTER_LOG_DIR:-${GLOBAL_ROOT}/logs}"
|
|
8
9
|
LOG_FILE="$LOG_DIR/babysitter-stop-hook.log"
|
|
9
10
|
|
|
10
11
|
export CODEX_PLUGIN_ROOT="${CODEX_PLUGIN_ROOT:-${PLUGIN_ROOT}}"
|
|
@@ -3,8 +3,9 @@ set -euo pipefail
|
|
|
3
3
|
|
|
4
4
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
5
|
PLUGIN_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
GLOBAL_ROOT="${BABYSITTER_GLOBAL_STATE_DIR:-$HOME/.a5c}"
|
|
7
|
+
STATE_DIR="${BABYSITTER_STATE_DIR:-${GLOBAL_ROOT}/state}"
|
|
8
|
+
LOG_DIR="${BABYSITTER_LOG_DIR:-${GLOBAL_ROOT}/logs}"
|
|
8
9
|
|
|
9
10
|
export CODEX_PLUGIN_ROOT="${CODEX_PLUGIN_ROOT:-${PLUGIN_ROOT}}"
|
|
10
11
|
export BABYSITTER_STATE_DIR="${STATE_DIR}"
|
package/hooks.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"hooks": {
|
|
3
3
|
"SessionStart": [
|
|
4
4
|
{
|
|
5
|
-
"matcher": "
|
|
5
|
+
"matcher": ".*",
|
|
6
6
|
"hooks": [
|
|
7
7
|
{
|
|
8
8
|
"type": "command",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
],
|
|
14
14
|
"UserPromptSubmit": [
|
|
15
15
|
{
|
|
16
|
-
"matcher": "
|
|
16
|
+
"matcher": ".*",
|
|
17
17
|
"hooks": [
|
|
18
18
|
{
|
|
19
19
|
"type": "command",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
],
|
|
25
25
|
"Stop": [
|
|
26
26
|
{
|
|
27
|
-
"matcher": "
|
|
27
|
+
"matcher": ".*",
|
|
28
28
|
"hooks": [
|
|
29
29
|
{
|
|
30
30
|
"type": "command",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a5c-ai/babysitter-codex",
|
|
3
|
-
"version": "0.1.11-staging.
|
|
3
|
+
"version": "0.1.11-staging.ee1aa82e",
|
|
4
4
|
"description": "Babysitter Codex skill bundle and integration package for OpenAI Codex CLI with SDK-managed process-library bootstrapping, 15 orchestration modes, and BOM-safe SKILL installation",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "node test/integration.test.js && node test/packaged-install.test.js",
|
|
@@ -17,14 +17,15 @@
|
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
".codex-plugin/",
|
|
20
|
-
".app.json",
|
|
21
20
|
"assets/",
|
|
22
21
|
"hooks/",
|
|
23
22
|
"hooks.json",
|
|
24
23
|
"skills/",
|
|
24
|
+
".app.json",
|
|
25
25
|
"bin/",
|
|
26
26
|
"scripts/",
|
|
27
|
-
"
|
|
27
|
+
"plugin.lock.json",
|
|
28
|
+
"README.md"
|
|
28
29
|
],
|
|
29
30
|
"keywords": [
|
|
30
31
|
"babysitter",
|
|
@@ -45,6 +46,6 @@
|
|
|
45
46
|
},
|
|
46
47
|
"homepage": "https://github.com/a5c-ai/babysitter/tree/main/plugins/babysitter-codex#readme",
|
|
47
48
|
"dependencies": {
|
|
48
|
-
"@a5c-ai/babysitter-sdk": "0.0.188-staging.
|
|
49
|
+
"@a5c-ai/babysitter-sdk": "0.0.188-staging.ee1aa82e"
|
|
49
50
|
}
|
|
50
51
|
}
|
package/plugin.lock.json
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockVersion": 1,
|
|
3
|
+
"pluginId": "ai.a5c.babysitter",
|
|
4
|
+
"pluginVersion": "0.1.5",
|
|
5
|
+
"generatedBy": "@a5c-ai/babysitter-codex",
|
|
6
|
+
"generatedAt": "2026-03-11T00:00:00.000Z",
|
|
7
|
+
"skills": [
|
|
8
|
+
{
|
|
9
|
+
"id": "assimilate",
|
|
10
|
+
"vendoredPath": "skills/assimilate",
|
|
11
|
+
"source": {
|
|
12
|
+
"type": "local",
|
|
13
|
+
"path": "skills/assimilate"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "babysit",
|
|
18
|
+
"vendoredPath": "skills/babysit",
|
|
19
|
+
"source": {
|
|
20
|
+
"type": "local",
|
|
21
|
+
"path": "skills/babysit"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "call",
|
|
26
|
+
"vendoredPath": "skills/call",
|
|
27
|
+
"source": {
|
|
28
|
+
"type": "local",
|
|
29
|
+
"path": "skills/call"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "doctor",
|
|
34
|
+
"vendoredPath": "skills/doctor",
|
|
35
|
+
"source": {
|
|
36
|
+
"type": "local",
|
|
37
|
+
"path": "skills/doctor"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "forever",
|
|
42
|
+
"vendoredPath": "skills/forever",
|
|
43
|
+
"source": {
|
|
44
|
+
"type": "local",
|
|
45
|
+
"path": "skills/forever"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "help",
|
|
50
|
+
"vendoredPath": "skills/help",
|
|
51
|
+
"source": {
|
|
52
|
+
"type": "local",
|
|
53
|
+
"path": "skills/help"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "issue",
|
|
58
|
+
"vendoredPath": "skills/issue",
|
|
59
|
+
"source": {
|
|
60
|
+
"type": "local",
|
|
61
|
+
"path": "skills/issue"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "model",
|
|
66
|
+
"vendoredPath": "skills/model",
|
|
67
|
+
"source": {
|
|
68
|
+
"type": "local",
|
|
69
|
+
"path": "skills/model"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "observe",
|
|
74
|
+
"vendoredPath": "skills/observe",
|
|
75
|
+
"source": {
|
|
76
|
+
"type": "local",
|
|
77
|
+
"path": "skills/observe"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "plan",
|
|
82
|
+
"vendoredPath": "skills/plan",
|
|
83
|
+
"source": {
|
|
84
|
+
"type": "local",
|
|
85
|
+
"path": "skills/plan"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "project-install",
|
|
90
|
+
"vendoredPath": "skills/project-install",
|
|
91
|
+
"source": {
|
|
92
|
+
"type": "local",
|
|
93
|
+
"path": "skills/project-install"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "resume",
|
|
98
|
+
"vendoredPath": "skills/resume",
|
|
99
|
+
"source": {
|
|
100
|
+
"type": "local",
|
|
101
|
+
"path": "skills/resume"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "retrospect",
|
|
106
|
+
"vendoredPath": "skills/retrospect",
|
|
107
|
+
"source": {
|
|
108
|
+
"type": "local",
|
|
109
|
+
"path": "skills/retrospect"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"id": "team-install",
|
|
114
|
+
"vendoredPath": "skills/team-install",
|
|
115
|
+
"source": {
|
|
116
|
+
"type": "local",
|
|
117
|
+
"path": "skills/team-install"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "user-install",
|
|
122
|
+
"vendoredPath": "skills/user-install",
|
|
123
|
+
"source": {
|
|
124
|
+
"type": "local",
|
|
125
|
+
"path": "skills/user-install"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "yolo",
|
|
130
|
+
"vendoredPath": "skills/yolo",
|
|
131
|
+
"source": {
|
|
132
|
+
"type": "local",
|
|
133
|
+
"path": "skills/yolo"
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
],
|
|
137
|
+
"metadata": {
|
|
138
|
+
"runtime": {
|
|
139
|
+
"name": "@a5c/babysitter-codex-runtime",
|
|
140
|
+
"version": "0.1.4"
|
|
141
|
+
},
|
|
142
|
+
"content": {
|
|
143
|
+
"name": "@a5c/babysitter-codex-content",
|
|
144
|
+
"version": "0.1.4",
|
|
145
|
+
"processLibrary": {
|
|
146
|
+
"repo": "https://github.com/a5c-ai/babysitter.git",
|
|
147
|
+
"processSubpath": "library",
|
|
148
|
+
"referenceSubpath": "library/reference",
|
|
149
|
+
"snapshotCommit": "unknown"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
package/scripts/team-install.js
CHANGED
|
@@ -32,7 +32,7 @@ function main() {
|
|
|
32
32
|
const args = parseArgs(process.argv);
|
|
33
33
|
const packageRoot = path.resolve(process.env.BABYSITTER_PACKAGE_ROOT || path.join(__dirname, '..'));
|
|
34
34
|
const workspaceRoot = args.workspace;
|
|
35
|
-
const workspacePluginRoot = path.join(workspaceRoot, 'plugins', 'babysitter');
|
|
35
|
+
const workspacePluginRoot = path.join(workspaceRoot, '.agents', 'plugins', 'babysitter');
|
|
36
36
|
const workspaceMarketplacePath = path.join(workspaceRoot, '.agents', 'plugins', 'marketplace.json');
|
|
37
37
|
const workspaceConfigPath = path.join(workspaceRoot, '.codex', 'config.toml');
|
|
38
38
|
|
|
@@ -81,6 +81,7 @@ function main() {
|
|
|
81
81
|
|
|
82
82
|
warnWindowsHooks();
|
|
83
83
|
console.log('[team-install] complete');
|
|
84
|
+
console.log('[team-install] If Codex was already open, start a new thread before expecting `babysitter:*` skills such as `$babysitter:babysit` or `$babysitter:call` to appear.');
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
main();
|
package/skills/babysit/SKILL.md
CHANGED
|
@@ -18,6 +18,8 @@ Read the SDK version from `versions.json` to ensure version compatibility:
|
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
SDK_VERSION=$(node -e "try{console.log(JSON.parse(require('fs').readFileSync('${CODEX_PLUGIN_ROOT}/versions.json','utf8')).sdkVersion||'latest')}catch{console.log('latest')}")
|
|
21
|
+
npm i -g @a5c-ai/babysitter-sdk@$SDK_VERSION
|
|
22
|
+
|
|
21
23
|
CLI="npx -y @a5c-ai/babysitter-sdk@$SDK_VERSION"
|
|
22
24
|
```
|
|
23
25
|
|
package/babysitter.lock.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"generatedAt": "2026-03-11T00:00:00.000Z",
|
|
4
|
-
"runtime": {
|
|
5
|
-
"name": "@a5c/babysitter-codex-runtime",
|
|
6
|
-
"version": "0.1.4"
|
|
7
|
-
},
|
|
8
|
-
"content": {
|
|
9
|
-
"name": "@a5c/babysitter-codex-content",
|
|
10
|
-
"version": "0.1.4",
|
|
11
|
-
"processLibrary": {
|
|
12
|
-
"repo": "https://github.com/a5c-ai/babysitter.git",
|
|
13
|
-
"processSubpath": "library",
|
|
14
|
-
"referenceSubpath": "library/reference",
|
|
15
|
-
"snapshotCommit": "unknown"
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|