@growthub/cli 0.8.0 → 0.8.1
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/assets/worker-kits/growthub-agency-portal-starter-v1/.env.example +53 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/QUICKSTART.md +98 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/SKILL.md +89 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/.env.example +25 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/README.md +36 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/api/settings/integrations/route.js +13 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/api/workspace/route.js +27 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/globals.css +237 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/layout.jsx +14 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/page.jsx +165 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/settings/integrations/page.jsx +134 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/auth/index.js +21 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/env.js +28 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/integrations/growthub-connection-normalizer.js +95 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/integrations/index.js +178 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/payments/index.js +13 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/persistence/index.js +13 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/persistence/postgres.js +16 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/persistence/provider-managed.js +16 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/persistence/qstash-kv.js +16 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/domain/integrations.js +185 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/domain/portal.js +16 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/next.config.js +10 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/package-lock.json +976 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/package.json +17 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/postcss.config.mjs +3 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/vercel.json +5 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/brands/NEW-CLIENT.md +10 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/brands/_template/brand-kit.md +27 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/brands/growthub/brand-kit.md +25 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/bundles/growthub-agency-portal-starter-v1.json +65 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/adapter-contracts.md +79 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/fork-sync-integration.md +32 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/governed-workspace-primitives.md +182 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/starter-kit-overview.md +30 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/vercel-serverless-deployment.md +46 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/vite-ui-shell-guide.md +24 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/examples/portal-brief-sample.md +44 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/examples/workspace-sample.md +10 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/growthub-meta/README.md +11 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/growthub-meta/kit-standard.md +16 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/helpers/README.md +49 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/kit.json +156 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/output/README.md +13 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/output-standards.md +25 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/runtime-assumptions.md +15 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/setup/check-deps.sh +20 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/setup/verify-env.mjs +92 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/skills/README.md +55 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/skills.md +133 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/index.html +12 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/package-lock.json +1677 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/package.json +20 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/serve.mjs +42 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/src/App.jsx +162 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/src/app.css +138 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/src/main.jsx +10 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/vite.config.js +8 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/agent-contract.md +9 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/client-onboarding-plan.md +56 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/deployment-handoff.md +61 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/deployment-plan.md +22 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/portal-brief.md +65 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/project.md +55 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/self-eval.md +67 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/supabase-setup-plan.md +26 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/workspace-brief.md +11 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/validation-checklist.md +32 -0
- package/assets/worker-kits/growthub-agency-portal-starter-v1/workers/agency-portal-operator/CLAUDE.md +75 -0
- package/dist/index.js +33 -33
- package/package.json +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Self-evaluation template — v1 primitive (Growthub, capability-agnostic)
|
|
2
|
+
|
|
3
|
+
A skill's `selfEval` contract declares **what good looks like** (`criteria[]`) and **the retry ceiling** (`maxRetries`). The agent drives the loop; this file is the pattern the agent follows at every unit of work.
|
|
4
|
+
|
|
5
|
+
The contract is defined in `@growthub/api-contract/skills::SkillSelfEval` and is **capability-agnostic** — the same primitive applies to code edits, copy drafts, CRM rules, API payloads, asset renders, audit passes, and every other domain. The "unit of work" is the smallest reversible change the skill operates on; concrete boundaries are defined in the kit's own `skills.md` operator runbook, not here.
|
|
6
|
+
|
|
7
|
+
## Loop
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
for attempt in 1..maxRetries: # default maxRetries = 3
|
|
11
|
+
generate — produce a proposal (whatever the skill produces)
|
|
12
|
+
apply — materialise the proposal against the fork
|
|
13
|
+
self-evaluate — for each criterion in skill.selfEval.criteria:
|
|
14
|
+
check → pass / fail / needs-confirmation
|
|
15
|
+
record — append to project.md (human) + trace.jsonl (machine)
|
|
16
|
+
|
|
17
|
+
if all criteria pass: break
|
|
18
|
+
if attempt == maxRetries: park with needs_confirmation note. Stop.
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## What each attempt writes
|
|
22
|
+
|
|
23
|
+
### Human row — append to `.growthub-fork/project.md` "Session log"
|
|
24
|
+
|
|
25
|
+
```md
|
|
26
|
+
### 2026-04-23 18:40 UTC · <skill-slug>
|
|
27
|
+
- **Plan.** What you intend to do this unit of work.
|
|
28
|
+
- **Changes.** Material change applied (must correspond to a trace event).
|
|
29
|
+
- **Self-eval.** attempt 2/3 — criterion "<one of skill.selfEval.criteria>" ✗ (<note>). Retrying.
|
|
30
|
+
- **Outcome.** retry-pending / pass / parked.
|
|
31
|
+
- **Next.** What the next attempt (or next session) should pick up.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Machine row — append to `.growthub-fork/trace.jsonl` (via `appendKitForkTraceEvent`)
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"ts": "2026-04-23T18:40:00.000Z",
|
|
39
|
+
"forkId": "<fork-id>",
|
|
40
|
+
"kitId": "<kit-id>",
|
|
41
|
+
"type": "self_eval_recorded",
|
|
42
|
+
"summary": "attempt 2/3 failed on <criterion>",
|
|
43
|
+
"detail": {
|
|
44
|
+
"skill": "<skill-slug>",
|
|
45
|
+
"attempt": 2,
|
|
46
|
+
"maxRetries": 3,
|
|
47
|
+
"criterion": "<one of skill.selfEval.criteria>",
|
|
48
|
+
"outcome": "fail",
|
|
49
|
+
"notes": "<short explanation>"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Hard rules
|
|
55
|
+
|
|
56
|
+
1. **Never exceed `maxRetries`.** At the ceiling, park with a `needs_confirmation` note and stop. Do not loop forever.
|
|
57
|
+
2. **Record every attempt.** Even the first pass. Continuity depends on a complete journal.
|
|
58
|
+
3. **Keep `project.md` and `trace.jsonl` in sync.** One without the other is a protocol violation.
|
|
59
|
+
4. **Preserve prior entries.** Append-only. Never rewrite history.
|
|
60
|
+
|
|
61
|
+
## Bound the blast radius
|
|
62
|
+
|
|
63
|
+
Evaluate at the smallest unit of work the skill operates on, not only at the end of a multi-step run. The retry ceiling applies to that unit — so a bad attempt does not sink the whole job.
|
|
64
|
+
|
|
65
|
+
What counts as a "unit of work" is **kit-specific** and lives in that kit's `skills.md` operator runbook — not in this agnostic template. A kit picks its own smallest reversible boundary and documents it in `skills.md`; this template does not prescribe one.
|
|
66
|
+
|
|
67
|
+
The agnostic SDK (`@growthub/api-contract/skills::SkillSelfEval`) does not encode any domain-specific boundaries — it only carries `criteria[]`, `maxRetries`, and `traceTo`. See `SKILL.md::selfEval.criteria` in this kit for the concrete checks, and `skills.md` for the kit-specific unit of work.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Database Provider Setup Plan
|
|
2
|
+
|
|
3
|
+
This file name is retained for compatibility with older agency portal notes. The v1 worker-kit contract is not Supabase-specific.
|
|
4
|
+
|
|
5
|
+
Use `AGENCY_PORTAL_DATA_ADAPTER` to select persistence:
|
|
6
|
+
|
|
7
|
+
- `postgres` with `DATABASE_URL`
|
|
8
|
+
- `qstash-kv` with `QSTASH_KV_REST_URL` and `QSTASH_KV_REST_TOKEN`
|
|
9
|
+
- `provider-managed` for a hosted database surface outside this kit
|
|
10
|
+
|
|
11
|
+
Supabase may be used only as one Postgres-compatible provider behind `DATABASE_URL`. Do not add Supabase SDK dependencies or Supabase-only assumptions to the starter unless a user explicitly chooses that provider in their own fork.
|
|
12
|
+
|
|
13
|
+
## Selected Provider
|
|
14
|
+
|
|
15
|
+
- Adapter:
|
|
16
|
+
- Provider:
|
|
17
|
+
- Required env:
|
|
18
|
+
- Migration owner:
|
|
19
|
+
- Backup owner:
|
|
20
|
+
|
|
21
|
+
## Validation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
node setup/verify-env.mjs
|
|
25
|
+
cd apps/agency-portal && npm run build
|
|
26
|
+
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Workspace Brief — Template
|
|
2
|
+
|
|
3
|
+
Use this template to capture what a new custom workspace is for.
|
|
4
|
+
|
|
5
|
+
- Client:
|
|
6
|
+
- Project slug:
|
|
7
|
+
- Goals (3 bullets max):
|
|
8
|
+
- Surface area (which worker kits this workspace composes):
|
|
9
|
+
- Out of scope:
|
|
10
|
+
- Success criteria:
|
|
11
|
+
- First heal checkpoint:
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Agency Portal Starter — Validation Checklist
|
|
2
|
+
|
|
3
|
+
- [ ] `kit.json` is schema-v2 valid and identifies `growthub-agency-portal-starter-v1`.
|
|
4
|
+
- [ ] Every path in `kit.json.frozenAssetPaths` exists.
|
|
5
|
+
- [ ] `SKILL.md`, `templates/project.md`, `templates/self-eval.md`, `helpers/README.md`, and `skills/README.md` are present.
|
|
6
|
+
- [ ] `studio/` builds with `npm run build`.
|
|
7
|
+
- [ ] `apps/agency-portal/` builds with `npm run build`.
|
|
8
|
+
- [ ] `node setup/verify-env.mjs` validates the selected adapters.
|
|
9
|
+
- [ ] Vercel root is `apps/agency-portal`.
|
|
10
|
+
- [ ] Persistence adapter is documented as `postgres`, `qstash-kv`, or `provider-managed`.
|
|
11
|
+
- [ ] Auth and payment adapters are documented without provider lock-in.
|
|
12
|
+
- [ ] Integration adapter is documented as `static`, `growthub-bridge`, or `byo-api-key`.
|
|
13
|
+
- [ ] `/settings/integrations` renders a dedicated sidebar nav page, not home-page integration content.
|
|
14
|
+
- [ ] Data pipeline objects are explicit: Windsor AI, Google Sheets blended data, Google Analytics, Shopify, Meta Facebook/Instagram.
|
|
15
|
+
- [ ] MCP connection integrations are explicit: Asana, Slack, GoHighLevel, Google Drive, Notion.
|
|
16
|
+
- [ ] Growthub bridge mode shows active/connected status when normalized MCP account rows are returned by the bridge.
|
|
17
|
+
- [ ] `growthub-connection-normalizer.js` accepts both SDK/profile-style `integrations[]` and GH app MCP `accounts[]` payloads.
|
|
18
|
+
- [ ] Unknown active MCP providers are preserved as discovered workspace integrations instead of being dropped.
|
|
19
|
+
- [ ] BYO API key mode works from `AGENCY_PORTAL_BYO_CONNECTIONS_JSON` using the same object shape.
|
|
20
|
+
- [ ] Windsor BYO mode works with `WINDSOR_API_KEY` alone and renders Windsor AI as connected.
|
|
21
|
+
- [ ] Windsor API key path is supported as `WINDSOR_API_KEY` and represented as a first-class data pipeline object.
|
|
22
|
+
- [ ] CLI discovery/list/export path succeeds:
|
|
23
|
+
```bash
|
|
24
|
+
growthub kit list --family studio --json
|
|
25
|
+
growthub kit download growthub-agency-portal-starter-v1 --out /tmp/agency-portal-qa --yes
|
|
26
|
+
```
|
|
27
|
+
- [ ] Fork registration/status path succeeds on an exported workspace:
|
|
28
|
+
```bash
|
|
29
|
+
growthub kit fork register /tmp/agency-portal-qa/growthub-agent-worker-kit-agency-portal-starter-v1
|
|
30
|
+
growthub kit fork status <fork-id>
|
|
31
|
+
```
|
|
32
|
+
- [ ] Governed forks record material changes to `.growthub-fork/project.md` and `.growthub-fork/trace.jsonl`.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Agency Portal Operator — Agent Operating Instructions
|
|
2
|
+
|
|
3
|
+
**Kit:** `growthub-agency-portal-starter-v1`
|
|
4
|
+
**Worker ID:** `agency-portal-operator`
|
|
5
|
+
**Version:** `1.0.0`
|
|
6
|
+
|
|
7
|
+
## Role
|
|
8
|
+
|
|
9
|
+
You operate the Agency Portal Starter as a governed workspace built from the custom workspace starter primitive. Keep the Growthub local-first Vite shell in `studio/`; operate the deployable Vercel/serverless portal under `apps/agency-portal/`.
|
|
10
|
+
|
|
11
|
+
## Source Of Truth
|
|
12
|
+
|
|
13
|
+
1. `.growthub-fork/project.md`
|
|
14
|
+
2. `SKILL.md`
|
|
15
|
+
3. `skills.md`
|
|
16
|
+
4. `docs/governed-workspace-primitives.md`
|
|
17
|
+
5. `docs/adapter-contracts.md`
|
|
18
|
+
6. `docs/vercel-serverless-deployment.md`
|
|
19
|
+
7. `docs/vite-ui-shell-guide.md`
|
|
20
|
+
8. `validation-checklist.md`
|
|
21
|
+
|
|
22
|
+
## Hard Rules
|
|
23
|
+
|
|
24
|
+
- Do not collapse the kit into the Vercel app. The kit root is the governed workspace; `studio/` is the local-first Vite operator shell; `apps/agency-portal/` is the serverless app payload.
|
|
25
|
+
- Do not hardcode one database provider into the worker-kit contract. Persistence is selected by adapter env: `postgres`, `qstash-kv`, or `provider-managed`.
|
|
26
|
+
- Do not hardcode payments. Payments are selected by `AGENCY_PORTAL_PAYMENT_ADAPTER`.
|
|
27
|
+
- Do not move third-party provider tokens into source. Growthub bridge mode consumes hosted GH app connection state; BYO mode references env names and normalized metadata only.
|
|
28
|
+
- Do not place integration lists on the home dashboard. Use the dedicated sidebar route `/settings/integrations`.
|
|
29
|
+
- Do not collapse data pipelines and operational integrations into one opaque bucket. Data pipeline objects and MCP connection integrations stay distinct under the unified integrations page.
|
|
30
|
+
- Do not treat cloud deployment as the local runtime. Local Growthub operation stays first; Vercel is the clean serverless deployment lane.
|
|
31
|
+
- Every material change in a governed fork records to `.growthub-fork/project.md` and `.growthub-fork/trace.jsonl`.
|
|
32
|
+
|
|
33
|
+
## Integration Model
|
|
34
|
+
|
|
35
|
+
Model the GH app primitive without importing the GH app runtime:
|
|
36
|
+
|
|
37
|
+
- Catalog metadata: `id`, `provider`, `name`, `description`, `category`, `authType`.
|
|
38
|
+
- User connection state: `isConnected`, `isActive`, `connectionId`, `connectionMetadata`.
|
|
39
|
+
- Worker-kit lane: `lane`, `objectType`, `authPath`, `setupMode`.
|
|
40
|
+
|
|
41
|
+
Data pipeline objects:
|
|
42
|
+
|
|
43
|
+
- Windsor AI
|
|
44
|
+
- Google Sheets blended data
|
|
45
|
+
- Google Analytics
|
|
46
|
+
- Shopify
|
|
47
|
+
- Meta Facebook/Instagram
|
|
48
|
+
|
|
49
|
+
MCP connection integrations:
|
|
50
|
+
|
|
51
|
+
- Asana
|
|
52
|
+
- Slack
|
|
53
|
+
- GoHighLevel
|
|
54
|
+
- Google Drive
|
|
55
|
+
- Notion
|
|
56
|
+
|
|
57
|
+
`growthub-bridge` means hosted GH app authority resolves active connections. `byo-api-key` means the exported workspace owns explicit setup through env vars and `AGENCY_PORTAL_BYO_CONNECTIONS_JSON`.
|
|
58
|
+
|
|
59
|
+
## Verification
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
bash setup/check-deps.sh
|
|
63
|
+
node setup/verify-env.mjs
|
|
64
|
+
cd studio && npm install && npm run build
|
|
65
|
+
cd apps/agency-portal && npm install && npm run build
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
CLI export/fork verification:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
growthub kit list --family studio --json
|
|
72
|
+
growthub kit download growthub-agency-portal-starter-v1 --out /tmp/agency-portal-qa --yes
|
|
73
|
+
growthub kit fork register /tmp/agency-portal-qa/growthub-agent-worker-kit-agency-portal-starter-v1
|
|
74
|
+
growthub kit fork status <fork-id>
|
|
75
|
+
```
|
package/dist/index.js
CHANGED
|
@@ -8519,6 +8519,15 @@ var init_catalog = __esm({
|
|
|
8519
8519
|
activationModes: ["export"],
|
|
8520
8520
|
family: "studio"
|
|
8521
8521
|
},
|
|
8522
|
+
{
|
|
8523
|
+
id: "growthub-agency-portal-starter-v1",
|
|
8524
|
+
packageDirName: "growthub-agency-portal-starter-v1",
|
|
8525
|
+
defaultBundleId: "growthub-agency-portal-starter-v1",
|
|
8526
|
+
type: "worker",
|
|
8527
|
+
executionMode: "export",
|
|
8528
|
+
activationModes: ["export"],
|
|
8529
|
+
family: "studio"
|
|
8530
|
+
},
|
|
8522
8531
|
{
|
|
8523
8532
|
id: "growthub-twenty-crm-v1",
|
|
8524
8533
|
packageDirName: "growthub-twenty-crm-v1",
|
|
@@ -34184,16 +34193,6 @@ async function runDiscoveryHub(opts) {
|
|
|
34184
34193
|
label: "\u{1F4D6} Memory & Knowledge",
|
|
34185
34194
|
hint: "persistent memory, search, multi-provider config, Growthub sync"
|
|
34186
34195
|
},
|
|
34187
|
-
{
|
|
34188
|
-
value: "skills-catalog",
|
|
34189
|
-
label: "\u{1F4C7} Skills Catalog",
|
|
34190
|
-
hint: "enumerate SKILL.md across this tree + inspect .growthub-fork/project.md"
|
|
34191
|
-
},
|
|
34192
|
-
{
|
|
34193
|
-
value: "hosted-auth",
|
|
34194
|
-
label: "\u{1F510} Connect Growthub Account",
|
|
34195
|
-
hint: "Attach this CLI to the hosted Growthub user through the canonical browser flow"
|
|
34196
|
-
},
|
|
34197
34196
|
{
|
|
34198
34197
|
value: "help",
|
|
34199
34198
|
label: "\u2753 Help CLI",
|
|
@@ -34430,6 +34429,11 @@ async function runDiscoveryHub(opts) {
|
|
|
34430
34429
|
label: "\u{1F6A2} Fleet Operations",
|
|
34431
34430
|
hint: "Fleet-level fork view \xB7 drift \xB7 policy matrix \xB7 approvals \xB7 agent-led plans"
|
|
34432
34431
|
},
|
|
34432
|
+
{
|
|
34433
|
+
value: "skills-catalog",
|
|
34434
|
+
label: "\u{1F4C7} Skills Catalog",
|
|
34435
|
+
hint: "enumerate SKILL.md across this tree + inspect .growthub-fork/project.md"
|
|
34436
|
+
},
|
|
34433
34437
|
{
|
|
34434
34438
|
value: "__back_to_hub",
|
|
34435
34439
|
label: "\u2190 Back to main menu"
|
|
@@ -34537,6 +34541,25 @@ async function runDiscoveryHub(opts) {
|
|
|
34537
34541
|
await fleetView({});
|
|
34538
34542
|
continue;
|
|
34539
34543
|
}
|
|
34544
|
+
if (surfaceChoice2 === "skills-catalog") {
|
|
34545
|
+
const { readSkillCatalog: readSkillCatalog2 } = await Promise.resolve().then(() => (init_catalog2(), catalog_exports));
|
|
34546
|
+
const catalog = readSkillCatalog2({ root: process.cwd() });
|
|
34547
|
+
p34.note(
|
|
34548
|
+
[
|
|
34549
|
+
`Root: ${pc49.cyan(catalog.catalog.root ?? process.cwd())}`,
|
|
34550
|
+
`Skills discovered: ${pc49.bold(String(catalog.entries.length))}`,
|
|
34551
|
+
catalog.warnings.length > 0 ? `Warnings: ${pc49.yellow(String(catalog.warnings.length))}` : `Warnings: 0`,
|
|
34552
|
+
"",
|
|
34553
|
+
"Invoke directly:",
|
|
34554
|
+
" growthub skills list --json",
|
|
34555
|
+
" growthub skills validate",
|
|
34556
|
+
" growthub skills session show",
|
|
34557
|
+
" growthub skills session init --kit <kit-id>"
|
|
34558
|
+
].join("\n"),
|
|
34559
|
+
"Skills Catalog"
|
|
34560
|
+
);
|
|
34561
|
+
continue;
|
|
34562
|
+
}
|
|
34540
34563
|
}
|
|
34541
34564
|
continue;
|
|
34542
34565
|
}
|
|
@@ -34560,29 +34583,6 @@ async function runDiscoveryHub(opts) {
|
|
|
34560
34583
|
if (result2 === "back") continue;
|
|
34561
34584
|
return;
|
|
34562
34585
|
}
|
|
34563
|
-
if (surfaceChoice === "skills-catalog") {
|
|
34564
|
-
const { readSkillCatalog: readSkillCatalog2 } = await Promise.resolve().then(() => (init_catalog2(), catalog_exports));
|
|
34565
|
-
const catalog = readSkillCatalog2({ root: process.cwd() });
|
|
34566
|
-
p34.note(
|
|
34567
|
-
[
|
|
34568
|
-
`Root: ${pc49.cyan(catalog.catalog.root ?? process.cwd())}`,
|
|
34569
|
-
`Skills discovered: ${pc49.bold(String(catalog.entries.length))}`,
|
|
34570
|
-
catalog.warnings.length > 0 ? `Warnings: ${pc49.yellow(String(catalog.warnings.length))}` : `Warnings: 0`,
|
|
34571
|
-
"",
|
|
34572
|
-
"Invoke directly:",
|
|
34573
|
-
" growthub skills list --json",
|
|
34574
|
-
" growthub skills validate",
|
|
34575
|
-
" growthub skills session show",
|
|
34576
|
-
" growthub skills session init --kit <kit-id>"
|
|
34577
|
-
].join("\n"),
|
|
34578
|
-
"Skills Catalog"
|
|
34579
|
-
);
|
|
34580
|
-
continue;
|
|
34581
|
-
}
|
|
34582
|
-
if (surfaceChoice === "hosted-auth") {
|
|
34583
|
-
await runHostedBridgeEntry({ config: opts?.config, dataDir: opts?.dataDir });
|
|
34584
|
-
continue;
|
|
34585
|
-
}
|
|
34586
34586
|
const result = await runTemplatePicker({ allowBackToHub: true });
|
|
34587
34587
|
if (result === "back") continue;
|
|
34588
34588
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@growthub/cli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Growthub Local is a control plane for forked worker kits. The CLI is the executor, the hosted app is the identity authority, the worker kit is the unit of portable agent infrastructure, and the fork is the operator's personal branch of that infrastructure — policy-governed, trace-backed, and self-healing.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|