bf60cfd99d
5 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
15ac834239 |
feat(template): expand dev team to 30+ roles with multi-repo coverage
- org.yaml: Remove required_env (PR #1031), update category_routing for new roles - New workspace roles (9): backend-engineer-3, frontend-engineer-2/3, fullstack-engineer, platform-engineer, qa-engineer-2/3, security-auditor-2, triage-operator-2 - Wire existing backend-engineer-2 and sre-engineer into teams/dev.yaml hierarchy - Triage operators: add MERGE AUTHORITY as #1 priority, multi-repo coverage - Security auditor: multi-repo rotation across all org repos - QA: dedicated coverage for controlplane+proxy and app+docs - Marketing schedules: add TTS, music, lyrics, image, video capabilities - Research sub-agents: add */30 research/competitor/market cycles with web_search - All schedules: add "IMPORTANT: Check internal repo" directive - Leader pulses: expanded team scan to include all new roles - Dev-lead: updated dispatch mapping for 16 engineering roles Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|
|
d424bd947f |
chore: remove extracted directories, add manifest-driven Docker builds
Remove plugins/, workspace-configs-templates/, org-templates/ dirs (now in standalone repos). Add manifest.json listing all 33 repos and scripts/clone-manifest.sh to clone them. Both Dockerfiles now use the manifest script instead of 33 hardcoded git-clone lines. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|
|
665f7f6313 |
feat(org-templates): Phase 4 — atomize each role to <role>/workspace.yaml
Part 4 of 4 — terminal step of the org.yaml scalability refactor. Each role in the molecule-dev template now owns its own workspace.yaml file, colocated with the existing system-prompt.md / initial-prompt.md / idle-prompt.md / schedules/*.md. Team files shrink to a leader's own definition plus a list of !include refs. ## Platform change `resolveYAMLIncludes` now uses a TWO-ROOT model: - Path resolution is relative to the INCLUDING file's directory (natural sibling + cousin refs, C-include / Sass @import convention). - Security bound is the ORIGINAL org root (`rootDir`), preserved across all recursion depths. Sibling-dir refs like `../my-role/workspace.yaml` from a team file are now allowed (they stay inside the org template); refs that escape the root still error. Regression coverage: new `TestResolveYAMLIncludes_SiblingDirAccess` reproduces the Phase 4 pattern (team file at `teams/x.yaml` referencing `../<role>/workspace.yaml`) — fails without the fix, passes with. ## Template change Atomized 15 child workspaces across 3 team files: - `teams/research.yaml`: 58 → 30 lines; 3 children now !include refs - `teams/dev.yaml`: 222 → 38 lines; 6 children now !include refs - `teams/marketing.yaml`: 143 → 28 lines; 6 children now !include refs Each role now has `<role>/workspace.yaml` colocated with its prompts. Example `frontend-engineer/` directory: frontend-engineer/ ├── workspace.yaml (24 lines — name/role/tier/canvas/plugins/...) ├── system-prompt.md (from earlier phases) ├── initial-prompt.md ├── idle-prompt.md └── (no schedules for this role — but if added, schedules/<slug>.md) ## File-size progression across all 4 phases | State | org.yaml | total `.yaml` in tree | |---|---:|---:| | Before (main) | 1801 lines / 108 KB | 1801 / 108 KB (one file) | | After Phase 1 (#389) | 1687 | 1687 / 101 KB | | After Phase 2 (#390) | 676 | 676 / 35 KB | | After Phase 3 (#393) | 114 | 683 (1 + 6 teams) / 33 KB | | **After this PR** | **114** | **~698** (1 + 6 + 15 workspace) / 35 KB | Aggregate size is flat — the decrease came from prompt externalization in Phases 1/2; Phases 3/4 reorganize structure without adding content. The win is readability and ownership: - Every individual file fits on 1-2 screens. - Adding a new role is now: create `<role>/` dir, add `workspace.yaml` + `system-prompt.md` + prompts, add ONE `!include` line to the team file. No touching of aggregated mega-YAML. - Team files can be reviewed + merged independently. ## Tests All 10 `TestResolveYAMLIncludes_*` tests pass, including the real-template integration test (`TestResolveYAMLIncludes_RealMoleculeDev`) which now walks org.yaml → teams/pm.yaml → teams/research.yaml → ../market-analyst/ workspace.yaml and validates the full 21-role tree unmarshals cleanly. Plus all existing `TestResolvePromptRef` + `TestOrgYAML` + `TestInitialPrompt` suites stay green. ## Ops followup After merging all 4 phases and deploying, the `POST /org/import` endpoint should produce a workspace tree byte-identical to the pre-refactor state. Verify with: diff <(curl POST /org/import before) <(curl POST /org/import after) or by spot-checking: - `/configs/config.yaml` bodies across all 21 workspaces - `workspace_schedules.prompt` row values The externalization is lossless — YAML literal to file and back recovers the same string modulo trailing-whitespace normalization. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|
|
f075c49af1 |
feat(org-templates): Phase 2 — bulk migrate 20 roles to file-ref prompts (#395)
Part 2 of 4 in the org.yaml scalability refactor. Follows PR #389 which added platform support; this PR completes the migration for every role in the `molecule-dev` template. ## Scope All 20 remaining roles moved from inline YAML literals to sibling .md files under their existing `files_dir`: - PM, Research Lead, Dev Lead, Marketing Lead (4 leaders) - Market Analyst, Technical Researcher, Competitive Intelligence (research) - Frontend/Backend/DevOps Engineer, Security Auditor, QA Engineer, UIUX Designer, Triage Operator (dev team) - DevRel, PMM, Content Marketer, Community Manager, SEO Growth Analyst, Social Media Brand (marketing team) Per workspace, externalized (where present): - `initial_prompt: |...` → `initial-prompt.md` + `initial_prompt_file:` - `idle_prompt: |...` → `idle-prompt.md` + `idle_prompt_file:` - `schedules[*].prompt: |...` → `schedules/<slug>.md` + `prompt_file:` Totals: 17 initial-prompt files, 12 idle-prompt files, 18 schedule files (47 new files). ## File-size impact | Before (main) | After Phase 1 | After Phase 2 | Reduction | |---|---|---|---| | 1801 lines | 1687 lines | 676 lines | **-62.5%** | | 108 KB | 101 KB | 35 KB | **-67%** | org.yaml is now pure structural scaffolding (name / role / tier / model / canvas / plugins / channels / children / category_routing / schedules metadata). Readable end-to-end on one screen per team. ## How the migration was driven A Python round-trip script (using `ruamel.yaml` to preserve comments + formatting) walked the workspace tree recursively, wrote prompts to files keyed by `files_dir`, and replaced inline keys with `*_file:` refs. Zero manual YAML hand-editing beyond the Phase 1 Documentation Specialist proof. Script is one-shot; not committed. Slug convention for schedule files: lowercase the schedule name, replace non-alphanumeric with `-`, collapse, cap 60 chars. Examples: - "Orchestrator pulse" → `orchestrator-pulse.md` - "Hourly template fitness audit" → `hourly-template-fitness-audit.md` - "Code quality audit (every 12h)" → `code-quality-audit-every-12h.md` ## Backwards compatibility Fully compatible — Phase 1's resolver prefers inline when both are set, so a future one-off experiment can still drop inline YAML. The migration doesn't remove inline support, just stops using it. ## Verification - [x] `python -c "yaml.safe_load(...)"` on edited org.yaml — parses clean - [x] Walk-and-inspect script: every workspace has exactly the expected `*_file:` refs, zero `INLINE_*` markers remain - [x] All 47 extracted .md files non-empty + trimmed - [x] `go test -run 'TestResolvePromptRef|TestOrgYAML|TestInitialPrompt'` passes (from Phase 1 platform work) - [ ] Post-merge: live `POST /org/import` against a fresh workspace, diff the resulting `/configs/config.yaml` + `workspace_schedules` rows against the pre-migration values (should be identical bodies) ## What's next - **Phase 3 (queued):** YAML `!include` directive for org.yaml; split the remaining 676 lines into `teams/{research,dev,marketing,ops}.yaml`. - **Phase 4 (queued):** per-workspace atomization; each role owns its own `workspace.yaml` manifest. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|
|
24fec62d7f |
initial commit — Molecule AI platform
Forked clean from public hackathon repo (Starfire-AgentTeam, BSL 1.1) with full rebrand to Molecule AI under github.com/Molecule-AI/molecule-monorepo. Brand: Starfire → Molecule AI. Slug: starfire / agent-molecule → molecule. Env vars: STARFIRE_* → MOLECULE_*. Go module: github.com/agent-molecule/platform → github.com/Molecule-AI/molecule-monorepo/platform. Python packages: starfire_plugin → molecule_plugin, starfire_agent → molecule_agent. DB: agentmolecule → molecule. History truncated; see public repo for prior commits and contributor attribution. Verified green: go test -race ./... (platform), pytest (workspace-template 1129 + sdk 132), vitest (canvas 352), build (mcp). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |