@a5c-ai/babysitter-github 0.1.1-staging.d0170171 → 0.1.1-staging.e2c886b5

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,25 @@
1
+ {
2
+ "name": "babysitter",
3
+ "version": "0.1.0",
4
+ "description": "Orchestrate complex, multi-step workflows with event-sourced state management, hook-based extensibility, and human-in-the-loop approval -- powered by the Babysitter SDK",
5
+ "author": { "name": "a5c.ai", "email": "support@a5c.ai" },
6
+ "license": "MIT",
7
+ "skills": "skills/",
8
+ "hooks": "hooks.json",
9
+ "commands": "commands/",
10
+ "agents": "AGENTS.md",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/a5c-ai/babysitter"
14
+ },
15
+ "keywords": [
16
+ "orchestration",
17
+ "workflow",
18
+ "automation",
19
+ "event-sourced",
20
+ "hooks",
21
+ "github-copilot",
22
+ "agent",
23
+ "LLM"
24
+ ]
25
+ }
package/README.md CHANGED
@@ -19,26 +19,25 @@ directly.
19
19
 
20
20
  ## Installation
21
21
 
22
- ### From GitHub repository (recommended)
22
+ ### From marketplace (recommended)
23
23
 
24
- Install directly from the Git repository using Copilot CLI:
24
+ Register the a5c.ai marketplace and install the plugin:
25
25
 
26
26
  ```bash
27
- copilot plugin install a5c-ai/babysitter:plugins/babysitter-github
28
- ```
29
-
30
- ### From marketplace
31
-
32
- If the a5c.ai marketplace has been registered, install by plugin name:
27
+ # Register the marketplace
28
+ copilot plugin marketplace add a5c-ai/babysitter
33
29
 
34
- ```bash
35
- copilot plugin install babysitter@a5c.ai
30
+ # Install the plugin
31
+ copilot plugin install babysitter
36
32
  ```
37
33
 
38
- To register the marketplace first:
34
+ ### Direct GitHub install
35
+
36
+ Install directly from the Git repository using Copilot CLI. Copilot CLI
37
+ discovers the plugin via `.github/plugin/marketplace.json` at the repo root:
39
38
 
40
39
  ```bash
41
- copilot plugin marketplace add a5c-ai/babysitter
40
+ copilot plugin install a5c-ai/babysitter
42
41
  ```
43
42
 
44
43
  ### Alternative Installation (npm / development)
@@ -99,8 +98,8 @@ The plugin provides:
99
98
 
100
99
  - `skills/babysit/SKILL.md` as the core orchestration entrypoint
101
100
  - Mode wrapper skills such as `$call`, `$plan`, and `$resume`
102
- - Plugin-level lifecycle hooks for `SessionStart`, `UserPromptSubmit`, and
103
- `Stop`
101
+ - Plugin-level lifecycle hooks for `sessionStart`, `sessionEnd`, and
102
+ `userPromptSubmitted`
104
103
 
105
104
  The process library is fetched and bound through the SDK CLI in
106
105
  `~/.a5c/active/process-library.json`.
@@ -148,10 +147,10 @@ Fires when a new Copilot CLI session begins. The hook:
148
147
  `versions.json`)
149
148
  3. Creates baseline session state in the `.a5c` state directory
150
149
 
151
- ### Stop
150
+ ### SessionEnd
152
151
 
153
- The orchestration loop driver. When Copilot CLI attempts to end its turn,
154
- this hook intercepts the exit and:
152
+ The orchestration loop driver. Registered as `sessionEnd` in `hooks.json`,
153
+ this hook fires when the Copilot CLI session ends and:
155
154
 
156
155
  1. Checks whether the active run has completed or emitted a completion proof
157
156
  2. If the run is still in progress, re-injects the next orchestration step
@@ -163,7 +162,7 @@ This is what keeps Babysitter iterating autonomously within the Copilot CLI
163
162
  session -- each turn performs one orchestration phase, and the Stop hook
164
163
  decides whether to loop or yield.
165
164
 
166
- ### UserPromptSubmit
165
+ ### UserPromptSubmitted
167
166
 
168
167
  Fires before a user prompt reaches the model. The hook applies
169
168
  density-filter compression to long user prompts to reduce token usage while
@@ -208,6 +207,10 @@ Copilot CLI looks for the plugin manifest in these paths, checked in order:
208
207
 
209
208
  The first match wins. This plugin uses `plugin.json` at the package root.
210
209
 
210
+ For marketplace discovery, Copilot CLI looks for `.github/plugin/marketplace.json`
211
+ at the repository root. This file lists all available plugins in the repo and is
212
+ used when installing via `copilot plugin install OWNER/REPO`.
213
+
211
214
  ### plugin.json Schema
212
215
 
213
216
  The manifest declares metadata, skills, hooks, and optional integrations:
@@ -337,8 +340,8 @@ repositories that contain a manifest listing available plugins.
337
340
 
338
341
  ### Creating a Marketplace
339
342
 
340
- A marketplace is a Git repository with a `marketplace.json` file in
341
- `.github/plugin/` or `.claude-plugin/`:
343
+ A marketplace is a Git repository with a `marketplace.json` file at the
344
+ repository root in `.github/plugin/marketplace.json`:
342
345
 
343
346
  ```json
344
347
  {
@@ -415,7 +418,7 @@ These registries are available without running `marketplace add`.
415
418
  ```
416
419
  plugins/babysitter-github/
417
420
  plugin.json # Plugin manifest (skills, hooks, metadata)
418
- .github/plugin.json # Marketplace manifest (copy of plugin.json)
421
+ .github/plugin.json # Plugin manifest (alternate discovery path)
419
422
  hooks.json # Hook configuration (sessionStart, sessionEnd, userPromptSubmitted)
420
423
  hooks/
421
424
  session-start.sh # SessionStart lifecycle hook
@@ -445,6 +448,12 @@ plugins/babysitter-github/
445
448
 
446
449
  ## Verification
447
450
 
451
+ Verify marketplace registration:
452
+
453
+ ```bash
454
+ copilot plugin marketplace list
455
+ ```
456
+
448
457
  Verify the installed plugin:
449
458
 
450
459
  ```bash
@@ -5,7 +5,7 @@ const os = require('os');
5
5
  const path = require('path');
6
6
  const { spawnSync } = require('child_process');
7
7
 
8
- const PLUGIN_NAME = 'babysitter-github';
8
+ const PLUGIN_NAME = 'babysitter';
9
9
  const PLUGIN_CATEGORY = 'Coding';
10
10
  const LEGACY_HOOK_SCRIPT_NAMES = [
11
11
  'session-start.sh',
package/bin/install.js CHANGED
@@ -28,16 +28,16 @@ function registerViaCopilotCli(pluginRoot) {
28
28
  });
29
29
 
30
30
  if (result.status === 0) {
31
- console.log(`[babysitter-github] Registered plugin via 'copilot plugin install'`);
31
+ console.log(`[babysitter] Registered plugin via 'copilot plugin install'`);
32
32
  return true;
33
33
  }
34
34
 
35
35
  // CLI not available or failed -- fall back to manual registration
36
36
  const stderr = (result.stderr || '').trim();
37
37
  if (result.error || stderr.includes('not found') || stderr.includes('not recognized')) {
38
- console.log(`[babysitter-github] Copilot CLI not found, using manual registration`);
38
+ console.log(`[babysitter] Copilot CLI not found, using manual registration`);
39
39
  } else {
40
- console.warn(`[babysitter-github] 'copilot plugin install' failed: ${stderr || 'unknown error'}, using manual registration`);
40
+ console.warn(`[babysitter] 'copilot plugin install' failed: ${stderr || 'unknown error'}, using manual registration`);
41
41
  }
42
42
  return false;
43
43
  }
@@ -47,7 +47,7 @@ function main() {
47
47
  const pluginRoot = getHomePluginRoot();
48
48
  const marketplacePath = getHomeMarketplacePath();
49
49
 
50
- console.log(`[babysitter-github] Installing plugin to ${pluginRoot}`);
50
+ console.log(`[babysitter] Installing plugin to ${pluginRoot}`);
51
51
 
52
52
  try {
53
53
  copyPluginBundle(PACKAGE_ROOT, pluginRoot);
@@ -62,18 +62,18 @@ function main() {
62
62
  installCopilotSurface(PACKAGE_ROOT, copilotHome);
63
63
 
64
64
  const active = ensureGlobalProcessLibrary(PACKAGE_ROOT);
65
- console.log(`[babysitter-github] marketplace: ${marketplacePath}`);
66
- console.log(`[babysitter-github] copilot config: ${path.join(copilotHome, 'config.json')}`);
67
- console.log(`[babysitter-github] process library: ${active.binding?.dir}`);
65
+ console.log(`[babysitter] marketplace: ${marketplacePath}`);
66
+ console.log(`[babysitter] copilot config: ${path.join(copilotHome, 'config.json')}`);
67
+ console.log(`[babysitter] process library: ${active.binding?.dir}`);
68
68
  if (active.defaultSpec?.cloneDir) {
69
- console.log(`[babysitter-github] process library clone: ${active.defaultSpec.cloneDir}`);
69
+ console.log(`[babysitter] process library clone: ${active.defaultSpec.cloneDir}`);
70
70
  }
71
- console.log(`[babysitter-github] process library state: ${active.stateFile}`);
71
+ console.log(`[babysitter] process library state: ${active.stateFile}`);
72
72
  warnWindowsHooks();
73
- console.log('[babysitter-github] Installation complete!');
74
- console.log('[babysitter-github] Restart GitHub Copilot CLI to pick up the installed plugin and config changes.');
73
+ console.log('[babysitter] Installation complete!');
74
+ console.log('[babysitter] Restart GitHub Copilot CLI to pick up the installed plugin and config changes.');
75
75
  } catch (err) {
76
- console.error(`[babysitter-github] Failed to install plugin: ${err.message}`);
76
+ console.error(`[babysitter] Failed to install plugin: ${err.message}`);
77
77
  process.exitCode = 1;
78
78
  }
79
79
  }
package/bin/uninstall.js CHANGED
@@ -12,7 +12,7 @@ const {
12
12
  removeMarketplaceEntry,
13
13
  } = require('./install-shared');
14
14
 
15
- const PLUGIN_NAME = 'babysitter-github';
15
+ const PLUGIN_NAME = 'babysitter';
16
16
 
17
17
  /**
18
18
  * Attempt to unregister the plugin via `copilot plugin uninstall`.
@@ -0,0 +1,37 @@
1
+ ---
2
+ description: Assimilate an external methodology, harness, or specification into babysitter process definitions with skills and agents.
3
+ argument-hint: Target to assimilate (e.g. repo URL, harness name, or spec path)
4
+ allowed-tools: Read, Grep, Write, Task, Bash, Edit, Grep, Glob, WebFetch, WebSearch, Search, AskUserQuestion, TodoWrite, TodoRead, Skill, BashOutput, KillShell, MultiEdit, LS
5
+ ---
6
+
7
+ Invoke the babysitter:babysit skill (using the Skill tool) and follow its instructions (SKILL.md).
8
+
9
+ Use the assimilation domain processes from the active process library to convert external sources into well-defined babysitter process definitions with accompanying skills/ and agents/ directories.
10
+
11
+ If the workspace does not already have an active process-library binding, initialize it first through the shared global SDK binding:
12
+
13
+ ```bash
14
+ babysitter process-library:active --json
15
+ ```
16
+
17
+ Run the process after formalizing it.
18
+
19
+ Available assimilation workflows:
20
+ - **methodology-assimilation** (`specializations/domains/assimilation/workflows/methodology-assimilation`) - Learns an external methodology from its repo and converts procedural instructions, commands, and manual flows into babysitter processes with refactored skills and agents. Supports output as methodology or specialization.
21
+ - **harness integration** (`specializations/domains/assimilation/harness/*`) - Integrates babysitter SDK with a specific AI coding harness (generic, codex, opencode, gemini-cli, openclaw, antigravity).
22
+
23
+ During the interview phase, determine which assimilation workflow to use based on the user's target:
24
+ - If the target is a **repo URL or methodology name** then use the methodology-assimilation workflow.
25
+ - If the target is a **harness name** (e.g. codex, opencode, antigravity) then use the matching harness process.
26
+ - If the target is a **specification or other source** then adapt the methodology-assimilation workflow for the spec format.
27
+ - If unclear, ask the user to clarify the assimilation target and type.
28
+
29
+ ## After Assimilation: Contribute Back
30
+
31
+ After successfully assimilating a methodology or harness integration, prompt the user to share it with the community. The assimilated process definitions, skills, and agents could benefit other babysitter users:
32
+
33
+ - **Completed a methodology assimilation**: `/babysitter:contrib library contribution: assimilated [methodology-name] into babysitter process definitions`
34
+ - **Completed a harness integration**: `/babysitter:contrib library contribution: [harness-name] harness integration`
35
+ - **Hit issues during assimilation** (e.g. unsupported patterns, missing SDK features): `/babysitter:contrib bug report: assimilation of [target] failed because [description]` or `/babysitter:contrib feature request: [what the SDK needs to support]`
36
+
37
+ Even just reporting that an assimilation didn't work well helps improve babysitter for everyone.
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: Orchestrate a babysitter run. use this command to start babysitting a complex workflow.
3
+ argument-hint: Specific instructions for the run.
4
+ allowed-tools: Read, Grep, Write, Task, Bash, Edit, Grep, Glob, WebFetch, WebSearch, Search, AskUserQuestion, TodoWrite, TodoRead, Skill, BashOutput, KillShell, MultiEdit, LS
5
+ ---
6
+
7
+ Invoke the babysitter:babysit skill (using the Skill tool) and follow its instructions (SKILL.md).
@@ -0,0 +1,20 @@
1
+ ---
2
+ description: Clean up .a5c/runs and .a5c/processes directories. Aggregates insights from completed/failed runs into docs/run-history-insights.md, then removes old run data and orphaned process files.
3
+ argument-hint: "[--dry-run] [--keep-days N] Optional flags. --dry-run shows what would be removed without deleting. --keep-days N keeps runs newer than N days (default 7)."
4
+ allowed-tools: Read, Grep, Write, Task, Bash, Edit, Grep, Glob, WebFetch, WebSearch, Search, AskUserQuestion, TodoWrite, TodoRead, Skill, BashOutput, KillShell, MultiEdit, LS
5
+ ---
6
+
7
+ Invoke the babysitter:babysit skill (using the Skill tool) and follow its instructions (SKILL.md).
8
+
9
+ Create and run a cleanup process using the process at `skills\babysit\process\cradle\cleanup-runs.js/processes/cleanup-runs.js`.
10
+
11
+ Implementation notes (for the process):
12
+ - Parse arguments for `--dry-run` flag (if present, set dryRun: true in inputs) and `--keep-days N` (default: 7)
13
+ - The process scans .a5c/runs/ for completed/failed runs, aggregates insights, writes summaries, then removes old data
14
+ - Always show the user what will be removed before removing (in interactive mode via breakpoints)
15
+ - In non-interactive mode (yolo), proceed with cleanup using defaults
16
+ - The insights file goes to docs/run-history-insights.md
17
+ - Only remove terminal runs (completed/failed) older than the keep-days threshold
18
+ - Never remove active/in-progress runs
19
+ - Remove orphaned process files not referenced by remaining runs
20
+ - After cleanup, show remaining run count and disk usage
@@ -0,0 +1,33 @@
1
+ ---
2
+ description: Submit feedback or contribute to babysitter project
3
+ argument-hint: Specific instructions for the run.
4
+ allowed-tools: Read, Grep, Write, Task, Bash, Edit, Grep, Glob, WebFetch, WebSearch, Search, AskUserQuestion, TodoWrite, TodoRead, Skill, BashOutput, KillShell, MultiEdit, LS
5
+ ---
6
+
7
+ Invoke the babysitter:babysit skill (using the Skill tool) and follow its instructions (SKILL.md).
8
+
9
+ ## Process Routing
10
+
11
+ Contribution processes live under the active process library's `cradle/` directory. Resolve the active library root with `babysitter process-library:active --json` and route based on arguments:
12
+
13
+ ### Issue-based (opens a GitHub issue in a5c-ai/babysitter)
14
+ * **Bug report** → `cradle/bug-report.js#process` — Report a bug in the SDK, CLI, process library, etc.
15
+ * **Feature request** → `cradle/feature-request.js#process` — Request a new feature or enhancement
16
+ * **Documentation question** → `cradle/documentation-question.js#process` — Ask about undocumented behavior or missing docs
17
+
18
+ ### PR-based (forks repo, creates branch, submits PR to a5c-ai/babysitter)
19
+ * **Bugfix** → `cradle/bugfix.js#process` — User already has the fix for a bug
20
+ * **Feature implementation** → `cradle/feature-implementation-contribute.js#process` — User already has a feature implementation
21
+ * **Harness integration** → `cradle/feature-harness-integration-contribute.js#process` — User has a harness (CI/CD, IDE, editor) integration
22
+ * **Library contribution** → `cradle/library-contribution.js#process` — New or improved process/skill/subagent for the library
23
+ * **Documentation answer** → `cradle/documentation-contribute-answer.js#process` — User has an answer for an unanswered docs question
24
+
25
+ ### Router (when arguments are empty or general)
26
+ * **Contribute** → `cradle/contribute.js#process` — Explains contribution types and routes to the specific process
27
+
28
+ ## Contribution Rules
29
+
30
+ * PR-based contributions: fork the babysitter repo (a5c-ai/babysitter) for the user, ask to star if not already starred, perform changes, submit PR
31
+ * Issue-based contributions: gather details, search for duplicates, review, then open an issue in a5c-ai/babysitter
32
+ * Add breakpoints (permissions) before ALL gh actions (fork, star, submit PR/issue) to allow user review and cancellation
33
+ * If arguments are empty: use the `contribute.js` router process to show options and route accordingly