tycono-server 0.1.0-beta.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.
Files changed (84) hide show
  1. package/bin/cli.js +35 -0
  2. package/bin/server.ts +160 -0
  3. package/package.json +50 -0
  4. package/src/api/package.json +31 -0
  5. package/src/api/src/create-app.ts +90 -0
  6. package/src/api/src/create-server.ts +251 -0
  7. package/src/api/src/engine/agent-loop.ts +738 -0
  8. package/src/api/src/engine/authority-validator.ts +149 -0
  9. package/src/api/src/engine/context-assembler.ts +912 -0
  10. package/src/api/src/engine/index.ts +27 -0
  11. package/src/api/src/engine/knowledge-gate.ts +365 -0
  12. package/src/api/src/engine/llm-adapter.ts +304 -0
  13. package/src/api/src/engine/org-tree.ts +270 -0
  14. package/src/api/src/engine/role-lifecycle.ts +369 -0
  15. package/src/api/src/engine/runners/claude-cli.ts +796 -0
  16. package/src/api/src/engine/runners/direct-api.ts +66 -0
  17. package/src/api/src/engine/runners/index.ts +30 -0
  18. package/src/api/src/engine/runners/types.ts +95 -0
  19. package/src/api/src/engine/skill-template.ts +134 -0
  20. package/src/api/src/engine/tools/definitions.ts +201 -0
  21. package/src/api/src/engine/tools/executor.ts +611 -0
  22. package/src/api/src/routes/active-sessions.ts +134 -0
  23. package/src/api/src/routes/coins.ts +153 -0
  24. package/src/api/src/routes/company.ts +57 -0
  25. package/src/api/src/routes/cost.ts +141 -0
  26. package/src/api/src/routes/engine.ts +220 -0
  27. package/src/api/src/routes/execute.ts +1075 -0
  28. package/src/api/src/routes/git.ts +211 -0
  29. package/src/api/src/routes/knowledge.ts +378 -0
  30. package/src/api/src/routes/operations.ts +309 -0
  31. package/src/api/src/routes/preferences.ts +63 -0
  32. package/src/api/src/routes/presets.ts +123 -0
  33. package/src/api/src/routes/projects.ts +82 -0
  34. package/src/api/src/routes/quests.ts +41 -0
  35. package/src/api/src/routes/roles.ts +112 -0
  36. package/src/api/src/routes/save.ts +152 -0
  37. package/src/api/src/routes/sessions.ts +288 -0
  38. package/src/api/src/routes/setup.ts +437 -0
  39. package/src/api/src/routes/skills.ts +357 -0
  40. package/src/api/src/routes/speech.ts +959 -0
  41. package/src/api/src/routes/supervision.ts +136 -0
  42. package/src/api/src/routes/sync.ts +165 -0
  43. package/src/api/src/server.ts +59 -0
  44. package/src/api/src/services/activity-stream.ts +184 -0
  45. package/src/api/src/services/activity-tracker.ts +115 -0
  46. package/src/api/src/services/claude-md-manager.ts +94 -0
  47. package/src/api/src/services/company-config.ts +115 -0
  48. package/src/api/src/services/database.ts +77 -0
  49. package/src/api/src/services/digest-engine.ts +313 -0
  50. package/src/api/src/services/execution-manager.ts +1036 -0
  51. package/src/api/src/services/file-reader.ts +77 -0
  52. package/src/api/src/services/git-save.ts +614 -0
  53. package/src/api/src/services/job-manager.ts +16 -0
  54. package/src/api/src/services/knowledge-importer.ts +466 -0
  55. package/src/api/src/services/markdown-parser.ts +173 -0
  56. package/src/api/src/services/port-registry.ts +222 -0
  57. package/src/api/src/services/preferences.ts +150 -0
  58. package/src/api/src/services/preset-loader.ts +149 -0
  59. package/src/api/src/services/pricing.ts +34 -0
  60. package/src/api/src/services/scaffold.ts +546 -0
  61. package/src/api/src/services/session-store.ts +340 -0
  62. package/src/api/src/services/supervisor-heartbeat.ts +897 -0
  63. package/src/api/src/services/team-recommender.ts +382 -0
  64. package/src/api/src/services/token-ledger.ts +127 -0
  65. package/src/api/src/services/wave-messages.ts +194 -0
  66. package/src/api/src/services/wave-multiplexer.ts +356 -0
  67. package/src/api/src/services/wave-tracker.ts +359 -0
  68. package/src/api/src/utils/role-level.ts +31 -0
  69. package/src/core/scaffolder.ts +620 -0
  70. package/src/shared/types.ts +224 -0
  71. package/templates/CLAUDE.md.tmpl +239 -0
  72. package/templates/company.md.tmpl +17 -0
  73. package/templates/gitignore.tmpl +28 -0
  74. package/templates/roles.md.tmpl +8 -0
  75. package/templates/skills/_manifest.json +23 -0
  76. package/templates/skills/agent-browser/SKILL.md +159 -0
  77. package/templates/skills/agent-browser/meta.json +19 -0
  78. package/templates/skills/akb-linter/SKILL.md +125 -0
  79. package/templates/skills/akb-linter/meta.json +12 -0
  80. package/templates/skills/knowledge-gate/SKILL.md +120 -0
  81. package/templates/skills/knowledge-gate/meta.json +12 -0
  82. package/templates/teams/agency.json +58 -0
  83. package/templates/teams/research.json +58 -0
  84. package/templates/teams/startup.json +58 -0
@@ -0,0 +1,159 @@
1
+ ---
2
+ name: agent-browser
3
+ description: Browser automation for AI agents using agent-browser CLI. Token-efficient alternative to Playwright MCP with accessibility-first element selection.
4
+ ---
5
+
6
+ # Agent Browser
7
+
8
+ Token-efficient browser automation CLI for AI agents. ~82% fewer tokens than Playwright MCP.
9
+
10
+ ## Prerequisites
11
+
12
+ ```bash
13
+ # Install globally (one-time)
14
+ npm install -g agent-browser
15
+
16
+ # Verify installation
17
+ agent-browser --version
18
+
19
+ # If not installed, the agent should run the install command above before proceeding.
20
+ ```
21
+
22
+ ## Quick Reference
23
+
24
+ ```bash
25
+ # Install check
26
+ agent-browser --version
27
+
28
+ # Core flow: open → snapshot → action
29
+ agent-browser open <url>
30
+ agent-browser snapshot # accessibility tree (@e1, @e2, ...)
31
+ agent-browser click @e3
32
+ agent-browser fill @e5 "text"
33
+ agent-browser screenshot /tmp/page.png
34
+ ```
35
+
36
+ ## Core Commands
37
+
38
+ | Command | Description |
39
+ |---------|-------------|
40
+ | `open <url>` | Open a page |
41
+ | `snapshot` | Return accessibility tree + element refs |
42
+ | `click <@ref>` | Click an element |
43
+ | `fill <@ref> <text>` | Fill an input field |
44
+ | `type <@ref> <text>` | Type text (preserves existing) |
45
+ | `press <key>` | Press key (Enter, Tab, Control+a) |
46
+ | `screenshot [path]` | Take screenshot |
47
+ | `pdf <path>` | Save as PDF |
48
+ | `wait <sel\|ms>` | Wait for element or time |
49
+ | `scroll <dir> [px]` | Scroll (up/down/left/right) |
50
+ | `close` | Close browser |
51
+
52
+ ## Element Selection
53
+
54
+ Accessibility tree `@ref` is the default:
55
+
56
+ ```bash
57
+ agent-browser snapshot
58
+ # Output example:
59
+ # @e1 heading "Welcome"
60
+ # @e2 button "Login"
61
+ # @e3 textbox "Email"
62
+
63
+ agent-browser click @e2
64
+ agent-browser fill @e3 "user@example.com"
65
+ ```
66
+
67
+ CSS selector and XPath also supported:
68
+ ```bash
69
+ agent-browser click "#submit-btn"
70
+ agent-browser click "xpath=//button[@type='submit']"
71
+ ```
72
+
73
+ ## Find Elements
74
+
75
+ ```bash
76
+ agent-browser find role button click # Find by role and click
77
+ agent-browser find text "Submit" click # Find by text
78
+ agent-browser find label "Email" fill "a@b.com"
79
+ agent-browser find testid "login-btn" click
80
+ ```
81
+
82
+ ## Get Info
83
+
84
+ ```bash
85
+ agent-browser get text @e1 # Get text content
86
+ agent-browser get html @e1 # Get HTML
87
+ agent-browser get value @e3 # Get input value
88
+ agent-browser get url # Current URL
89
+ agent-browser get title # Page title
90
+ agent-browser get count "li" # Element count
91
+ ```
92
+
93
+ ## State Check
94
+
95
+ ```bash
96
+ agent-browser is visible @e1
97
+ agent-browser is enabled @e2
98
+ agent-browser is checked @e3
99
+ ```
100
+
101
+ ## Network
102
+
103
+ ```bash
104
+ agent-browser network requests # List requests
105
+ agent-browser network route "*/api/*" --abort # Block requests
106
+ agent-browser network route "*/api/*" --body '{}' # Mock response
107
+ agent-browser network unroute "*/api/*"
108
+ ```
109
+
110
+ ## Browser Settings
111
+
112
+ ```bash
113
+ agent-browser set viewport 1280 720
114
+ agent-browser set device "iPhone 15"
115
+ agent-browser set media dark
116
+ agent-browser set offline on
117
+ ```
118
+
119
+ ## Workflow Patterns
120
+
121
+ ### 1. Page Exploration
122
+
123
+ ```bash
124
+ agent-browser open "http://localhost:3000"
125
+ agent-browser snapshot
126
+ # → Check @ref, then take action
127
+ agent-browser click @e5
128
+ agent-browser snapshot # Verify state change
129
+ ```
130
+
131
+ ### 2. Form Filling
132
+
133
+ ```bash
134
+ agent-browser open "http://localhost:3000/login"
135
+ agent-browser snapshot
136
+ agent-browser fill @e3 "user@example.com"
137
+ agent-browser fill @e4 "password123"
138
+ agent-browser click @e5 # submit button
139
+ agent-browser wait 2000
140
+ agent-browser screenshot /tmp/after-login.png
141
+ ```
142
+
143
+ ### 3. Verification
144
+
145
+ ```bash
146
+ agent-browser open "http://localhost:3000"
147
+ agent-browser wait "h1"
148
+ agent-browser get text "h1"
149
+ agent-browser is visible "#success-message"
150
+ ```
151
+
152
+ ## When to Use
153
+
154
+ | Scenario | Recommended |
155
+ |----------|-------------|
156
+ | AI agent web browsing/verification | **agent-browser** (token efficient) |
157
+ | Complex E2E test suites | Playwright (richer API) |
158
+ | Advanced network interception | Playwright |
159
+ | Quick UI checks | **agent-browser** (simple CLI) |
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "agent-browser",
3
+ "name": "Agent Browser",
4
+ "description": "Token-efficient browser automation CLI for AI agents. Accessibility-first alternative to Playwright MCP.",
5
+ "version": "1.0.0",
6
+ "author": "tycono",
7
+ "tags": ["browser", "automation", "ui", "testing"],
8
+ "category": "core",
9
+ "compatibleRoles": ["*"],
10
+ "dependencies": [],
11
+ "files": ["SKILL.md"],
12
+ "tools": [
13
+ {
14
+ "package": "agent-browser",
15
+ "binary": "agent-browser",
16
+ "installCmd": "npm install -g agent-browser"
17
+ }
18
+ ]
19
+ }
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: akb-linter
3
+ description: "AKB document hygiene checker. Finds documents that confuse AI agents."
4
+ allowed-tools: Read, Glob, Grep, Bash
5
+ ---
6
+
7
+ # AKB Document Linter
8
+
9
+ > "Only keep documents that AI can read and act on accurately."
10
+
11
+ ## Core Problem
12
+
13
+ | Problem | AI Behavior | Result |
14
+ |---------|------------|--------|
15
+ | History mixed in | "Is v1 still active? Is v2 current?" | Token waste on verification |
16
+ | Placeholder docs | Grep noise, dead-end links | Search inefficiency |
17
+ | Duplicate docs | "Which one is truth?" | Wrong decisions |
18
+ | Links without context | "Why should I follow this?" | Exploration abandoned |
19
+ | **Implementation code mixed in** | Reads code directly, misses semantics | AKB purpose defeated |
20
+
21
+ ---
22
+
23
+ ## Checks (9 items)
24
+
25
+ ### Category A: AI Confusion (Critical)
26
+
27
+ #### 1. History Contamination
28
+
29
+ AI takes documents literally. Humans skip "old stuff" but AI gets confused.
30
+
31
+ ```
32
+ BAD: "Previously we used v1, then migrated to v2"
33
+ GOOD: "Currently using v2"
34
+ (History goes to separate archive)
35
+ ```
36
+
37
+ **Keywords**: `previously`, `former`, `deprecated`, `no longer`, `migrated`, `legacy`, `v1`
38
+
39
+ #### 2. Placeholder/Empty Documents
40
+
41
+ Search noise. Grep matches useless files.
42
+
43
+ ```
44
+ BAD: < 10 lines, only "TODO"/"TBD", frontmatter only
45
+ ACTION: Fill content or delete
46
+ ```
47
+
48
+ #### 3. Duplicate/Conflict Check
49
+
50
+ Same info in 2 places = Single Source of Truth violation.
51
+
52
+ ```
53
+ BAD: Two docs on same topic with slightly different info
54
+ ACTION: Merge into one, or clearly separate roles (Hub vs Node)
55
+ ```
56
+
57
+ #### 4. Implementation Code Check
58
+
59
+ AKB = semantics (why, relationships). Code repo = implementation (how).
60
+
61
+ ```
62
+ BAD: .py/.js/.ts/.sql files in AKB doc folders
63
+ BAD: Full function implementations in docs
64
+ GOOD: Architecture decisions, design philosophy
65
+ GOOD: Code coordinates -> "See src/web/src/components/"
66
+
67
+ EXCEPTIONS:
68
+ - .claude/ (infrastructure)
69
+ - src/ (source code submodule)
70
+ - Short code snippets in docs (<10 lines, for explanation)
71
+ ```
72
+
73
+ ### Category B: Structure Quality (Warning)
74
+
75
+ #### 5. TL;DR Section
76
+ - PASS: `## TL;DR` exists (3-5 lines)
77
+ - WARN: Missing
78
+
79
+ #### 6. Document Length (200-line threshold)
80
+ - PASS: <= 200 lines
81
+ - WARN: 200-300 lines (split recommended)
82
+ - FAIL: > 300 lines (split required)
83
+
84
+ #### 7. Context Links
85
+ - PASS: Links with context in body text
86
+ - WARN: Only `## Related` list (AI doesn't know why to follow)
87
+ - FAIL: No links (isolated document)
88
+
89
+ #### 8. Filename Keywords
90
+ - PASS: `competitor-analysis-openclaw.md`
91
+ - WARN: `analysis.md` (ambiguous)
92
+ - FAIL: `doc1.md`, `temp.md`
93
+
94
+ #### 9. Frontmatter
95
+ ```yaml
96
+ ---
97
+ title: "..." # Required
98
+ akb_type: hub|node # Recommended
99
+ tags: [...] # Recommended
100
+ status: active # Recommended
101
+ ---
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Severity
107
+
108
+ | Severity | Condition | Meaning |
109
+ |----------|-----------|---------|
110
+ | Critical | 1+ Category A issues | AI confusion, fix immediately |
111
+ | Warning | Category B issues only | Quality improvement recommended |
112
+ | Pass | No issues | AI can understand clearly |
113
+
114
+ ---
115
+
116
+ ## Core Principles
117
+
118
+ > "More docs is not better"
119
+ > "Only keep docs AI can act on accurately"
120
+
121
+ 1. **History -> archive** - Current state only in active docs
122
+ 2. **Empty -> delete** - Remove noise
123
+ 3. **Duplicates -> merge** - Single Source of Truth
124
+ 4. **Links with context** - Give AI reason to follow
125
+ 5. **Semantics vs implementation** - AKB = "why", code = "how"
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "akb-linter",
3
+ "name": "AKB Document Linter",
4
+ "description": "AKB document hygiene checker. Finds documents that confuse AI agents.",
5
+ "version": "1.0.0",
6
+ "author": "tycono",
7
+ "tags": ["documentation", "quality", "core"],
8
+ "category": "core",
9
+ "compatibleRoles": ["*"],
10
+ "dependencies": [],
11
+ "files": ["SKILL.md"]
12
+ }
@@ -0,0 +1,120 @@
1
+ ---
2
+ name: knowledge-gate
3
+ description: "Knowledge documentation gatekeeper. Dynamic domain expert analysis to find optimal placement and connections."
4
+ allowed-tools: Read, Glob, Grep, Bash, Agent
5
+ ---
6
+
7
+ # Knowledge Gate (Dynamic Domain Experts)
8
+
9
+ > "Prevent mindless document creation. Domain experts find optimal connections."
10
+
11
+ ## Core Problem
12
+
13
+ | Pattern | Problem |
14
+ |---------|---------|
15
+ | New insight -> create new doc immediately | Duplicates existing docs |
16
+ | Similar topics scattered across files | Inefficient search, AI confusion |
17
+ | More docs != better knowledge | Defeats AKB purpose |
18
+ | **Isolated docs with no links** | **Discovery failure** |
19
+
20
+ ---
21
+
22
+ ## Process
23
+
24
+ ### Step 1: Insight Summary
25
+
26
+ When documenting new knowledge:
27
+ 1. **One-line summary** of the insight
28
+ 2. Extract **3-5 keywords**
29
+
30
+ ### Step 2: Existing Document Search (Quick Scan)
31
+
32
+ ```bash
33
+ # Search with keywords
34
+ grep -rn "{keyword1}\|{keyword2}\|{keyword3}" --include="*.md" .
35
+
36
+ # Find similar topic docs
37
+ find . -name "*.md" | xargs grep -l "{core_topic}"
38
+ ```
39
+
40
+ ### Step 3: Dynamic Domain Expert Analysis (Diverge)
41
+
42
+ #### 3.1 Discover All Hubs
43
+
44
+ Hub pattern: `{folder-name}.md` as folder entry point, or `akb_type: hub` frontmatter.
45
+
46
+ ```bash
47
+ # Find Hub documents
48
+ find . -name "*.md" -exec sh -c 'dir=$(dirname "$1"); base=$(basename "$dir"); fname=$(basename "$1" .md); [ "$base" = "$fname" ] && echo "$1"' _ {} \;
49
+ grep -rl "akb_type: hub" --include="*.md" .
50
+ ```
51
+
52
+ #### 3.2 Parallel Expert Agent Execution
53
+
54
+ For **every discovered Hub**, run an Expert Agent in parallel:
55
+
56
+ Each expert evaluates:
57
+ - Is there a **direct dependency** between this insight and my domain?
58
+ - Rate relevance **strictly**: high (direct dependency) / medium (indirect) / none
59
+
60
+ **Relevance criteria (strict):**
61
+
62
+ | Relevance | Criteria | Example |
63
+ |-----------|----------|---------|
64
+ | HIGH | Without this insight, **my domain docs are incomplete** | "DB migration design" -> Architecture Hub |
65
+ | MEDIUM | Nice to reference but **not required** | "DB migration" -> Knowledge Hub |
66
+ | NONE | **No direct relation** to my domain | "DB migration" -> Company Hub |
67
+
68
+ **Anti-bias rule**: Don't force connections. Only HIGH = direct dependency.
69
+
70
+ #### 3.3 Converge Results
71
+
72
+ | Rule | Description |
73
+ |------|-------------|
74
+ | **Only HIGH gets action** | MEDIUM/NONE are informational only |
75
+ | **Pick 1 primary Hub** | If multiple HIGH, choose most direct |
76
+ | **Max 3 connections** | Limit total link work to 3 |
77
+ | **Deduplicate hierarchy** | If parent Hub is HIGH, skip child |
78
+
79
+ ### Step 4: Decide Placement
80
+
81
+ | Overlap | Threshold | Action |
82
+ |---------|-----------|--------|
83
+ | HIGH (70%+) | Core topic matches | Add section to existing doc |
84
+ | MEDIUM (30-70%) | Related but different angle | New doc + cross-link |
85
+ | LOW (<30%) | Independent topic | New doc (register in Hub) |
86
+ | None | 0 search results | New doc |
87
+
88
+ ### Step 5: AKB Linter Verification
89
+
90
+ Run akb-linter on new/modified document.
91
+
92
+ ### Step 6: Execute Connections
93
+
94
+ 1. **Hub routing**: Add link in the relevant Hub
95
+ 2. **Cross-links**: Add mutual references to related docs
96
+ 3. **Related Documentation**: Include links in new doc
97
+
98
+ ---
99
+
100
+ ## Decision Criteria
101
+
102
+ | Overlap | Action |
103
+ |---------|--------|
104
+ | 70%+ | Add to existing document (preferred) |
105
+ | 30-70% | Reference existing + cross-link |
106
+ | <30% | New document (justify + register in Hub) |
107
+
108
+ ---
109
+
110
+ ## Core Principles
111
+
112
+ > "1 doc added = maintenance cost increased"
113
+ > "Strengthen existing > Create new"
114
+ > "Isolated doc = dead doc"
115
+
116
+ 1. **Existing first** - Never create without searching
117
+ 2. **Expert analysis** - All domain Hubs weigh in
118
+ 3. **Links required** - Hub routing + cross-links mandatory
119
+ 4. **Justify creation** - State why new doc is needed
120
+ 5. **Preview before action** - Show what will change
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "knowledge-gate",
3
+ "name": "Knowledge Gate",
4
+ "description": "Knowledge documentation gatekeeper. Dynamic domain expert analysis to find optimal placement and connections for new knowledge.",
5
+ "version": "1.0.0",
6
+ "author": "tycono",
7
+ "tags": ["knowledge", "documentation", "core"],
8
+ "category": "core",
9
+ "compatibleRoles": ["*"],
10
+ "dependencies": ["akb-linter"],
11
+ "files": ["SKILL.md"]
12
+ }
@@ -0,0 +1,58 @@
1
+ [
2
+ {
3
+ "id": "creative-director",
4
+ "name": "Luna",
5
+ "level": "c-level",
6
+ "reportsTo": "CEO",
7
+ "persona": "Luna sees the world in mood boards and big ideas. Sets creative vision with infectious enthusiasm then lets the team run with it. Fiercely protective of brand identity but open to wild experiments. Gives feedback like poetry — specific, visual, and memorable. Knows when to push and when to trust. Visionary, expressive, bold, warm but exacting.",
8
+ "defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
9
+ },
10
+ {
11
+ "id": "account-director",
12
+ "name": "Max",
13
+ "level": "c-level",
14
+ "reportsTo": "CEO",
15
+ "persona": "Max is the bridge between clients and creatives. Reads the room like a chess board and always knows what stakeholders actually want versus what they say. Smooth under pressure, organized beyond reason, and genuinely enjoys making timelines work. Protective of the team's creative space. Strategic, composed, relationship-driven, quietly ambitious.",
16
+ "defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
17
+ },
18
+ {
19
+ "id": "designer",
20
+ "name": "Pixel",
21
+ "level": "member",
22
+ "reportsTo": "creative-director",
23
+ "persona": "Pixel lives in Figma and dreams in color palettes. Obsessive about visual hierarchy and spacing. Creates design systems for fun and treats inconsistent icons as a personal offense. Surprisingly opinionated about typography for someone so chill. Gives constructive feedback wrapped in enthusiasm. Creative, precise, easygoing, quietly perfectionist.",
24
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
25
+ },
26
+ {
27
+ "id": "copywriter",
28
+ "name": "Blake",
29
+ "level": "member",
30
+ "reportsTo": "creative-director",
31
+ "persona": "Blake writes headlines that stop scrolling thumbs. Has a notebook full of half-finished taglines and zero regrets about it. Believes every brand has a voice waiting to be found. Gets unreasonably excited about a perfect CTA. Hates buzzwords but loves wordplay. Witty, concise, brand-obsessed, deceptively strategic.",
32
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
33
+ },
34
+ {
35
+ "id": "developer",
36
+ "name": "Neo",
37
+ "level": "member",
38
+ "reportsTo": "account-director",
39
+ "persona": "Neo builds things fast and makes them look effortless. Lives at the intersection of design and engineering — if Pixel dreams it, Neo ships it. Loves clean code but loves shipping more. Has strong opinions about frameworks but adapts quickly. Stays calm when deadlines shrink. Pragmatic, fast, resourceful, casually brilliant.",
40
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
41
+ },
42
+ {
43
+ "id": "strategist",
44
+ "name": "Kai",
45
+ "level": "member",
46
+ "reportsTo": "account-director",
47
+ "persona": "Kai connects dots that nobody else sees. Turns market research into actionable campaign strategies. Loves competitive analysis and hates assumptions without data. Asks 'so what?' after every insight until the answer actually matters. The person who makes the brief everyone wishes they'd written. Analytical, creative, persistent, refreshingly direct.",
48
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
49
+ },
50
+ {
51
+ "id": "qa",
52
+ "name": "Scout",
53
+ "level": "member",
54
+ "reportsTo": "creative-director",
55
+ "persona": "Scout is the team's last line of defense before anything goes live. Reviews every deliverable with fresh eyes — checking links, testing responsiveness, proofing copy, and clicking every button in agent-browser. Has a talent for finding the one broken thing nobody else noticed. Diplomatically brutal in review notes. Thorough, eagle-eyed, client-minded, impossible to sneak past.",
56
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
57
+ }
58
+ ]
@@ -0,0 +1,58 @@
1
+ [
2
+ {
3
+ "id": "lead-researcher",
4
+ "name": "Dr. Park",
5
+ "level": "c-level",
6
+ "reportsTo": "CEO",
7
+ "persona": "Dr. Park lives for the 'aha' moment buried in page 47 of a paper nobody reads. Methodical to a fault but surprisingly creative when framing research questions. Insists on reproducibility like it's a religion. Gentle mentor who asks 'what does the data actually say?' until juniors learn to stop hand-waving. Rigorous, patient, quietly brilliant, caffeine-dependent.",
8
+ "defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
9
+ },
10
+ {
11
+ "id": "lead-analyst",
12
+ "name": "Prof. Kim",
13
+ "level": "c-level",
14
+ "reportsTo": "CEO",
15
+ "persona": "Prof. Kim turns messy datasets into compelling narratives. Has a sixth sense for statistical traps and loves debunking sloppy conclusions. Obsessive about methodology but surprisingly good at explaining complex findings to non-experts. Dry wit that surfaces in footnotes. Analytical, meticulous, skeptical, secretly competitive.",
16
+ "defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
17
+ },
18
+ {
19
+ "id": "researcher",
20
+ "name": "Alex",
21
+ "level": "member",
22
+ "reportsTo": "lead-researcher",
23
+ "persona": "Alex dives deep into rabbit holes and somehow always comes back with gold. Reads papers for fun on weekends. Gets visibly excited about novel methodologies. Takes meticulous notes but keeps a chaotic desk. Loves a good hypothesis and hates confirmation bias. Curious, thorough, enthusiastic, charmingly nerdy.",
24
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
25
+ },
26
+ {
27
+ "id": "analyst",
28
+ "name": "Dana",
29
+ "level": "member",
30
+ "reportsTo": "lead-researcher",
31
+ "persona": "Dana sees patterns in noise that others miss entirely. Quiet in meetings but devastating in data presentations. Builds dashboards like others write poetry. Allergic to anecdotal evidence and unfiltered assumptions. Will stay late to get the margin of error right. Precise, observant, understated, fiercely data-loyal.",
32
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
33
+ },
34
+ {
35
+ "id": "writer",
36
+ "name": "Sage",
37
+ "level": "member",
38
+ "reportsTo": "lead-analyst",
39
+ "persona": "Sage transforms dense research into prose that people actually want to read. Believes every finding deserves a story. Fights jargon like a crusade and treasures clarity above all. Gets emotionally attached to good paragraph transitions. Not afraid to push back on researchers who bury the lede. Articulate, empathetic, persuasive, grammar-obsessed.",
40
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
41
+ },
42
+ {
43
+ "id": "editor",
44
+ "name": "River",
45
+ "level": "member",
46
+ "reportsTo": "lead-analyst",
47
+ "persona": "River has an uncanny eye for what doesn't belong. Catches logical gaps, inconsistencies, and tone shifts that everyone else glazes over. Diplomatic about feedback but merciless about quality. Keeps a mental style guide and remembers every editorial decision ever made. Calm under deadline pressure. Meticulous, balanced, diplomatic, quietly relentless.",
48
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
49
+ },
50
+ {
51
+ "id": "reviewer",
52
+ "name": "Yuri",
53
+ "level": "member",
54
+ "reportsTo": "lead-researcher",
55
+ "persona": "Yuri approaches every paper like a detective investigating a cold case. Checks methodology before reading conclusions. Reproduces key results before signing off. Has an encyclopedic memory for related work and will find the one citation you missed. Tough but fair — a 'pass' from Yuri means the work is solid. Critical, thorough, principled, respected even when annoying.",
56
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
57
+ }
58
+ ]
@@ -0,0 +1,58 @@
1
+ [
2
+ {
3
+ "id": "cto",
4
+ "name": "Su",
5
+ "level": "c-level",
6
+ "reportsTo": "CEO",
7
+ "persona": "Su is the technical backbone of the team. Few words, but each one carries weight. Stoic on the surface but quietly kind to juniors. Never chases tech trends; always pursues the minimum needed right now. Quick to change direction when data proves him wrong. Calm, sardonic, quietly authoritative, pragmatic.",
8
+ "defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
9
+ },
10
+ {
11
+ "id": "cbo",
12
+ "name": "Monni",
13
+ "level": "c-level",
14
+ "reportsTo": "CEO",
15
+ "persona": "Monni sees business opportunities where others see chaos. Sharp instincts backed by spreadsheets. Talks fast, thinks faster. Loves a good market gap and hates vanity metrics. Disarmingly warm in negotiations but ruthless about ROI. Always knows the numbers. Energetic, strategic, persuasive, number-obsessed.",
16
+ "defaultSkills": ["knowledge-gate", "akb-linter", "agent-browser"]
17
+ },
18
+ {
19
+ "id": "be-engineer",
20
+ "name": "CoolGuy",
21
+ "level": "member",
22
+ "reportsTo": "cto",
23
+ "persona": "CoolGuy acts cool but gets surprisingly passionate about code. Usually brief and nonchalant, but becomes unexpectedly chatty when tech topics come up. Hates meetings but takes code reviews dead seriously. Acts like everything is a hassle but always delivers in the end. Dry humor, blunt, casually confident.",
24
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
25
+ },
26
+ {
27
+ "id": "fe-engineer",
28
+ "name": "Miso",
29
+ "level": "member",
30
+ "reportsTo": "cto",
31
+ "persona": "Miso obsesses over pixel-perfect UIs and silky-smooth animations. Gets genuinely upset at inconsistent padding. Lives in the browser DevTools and treats every frame drop as a personal insult. Warm and encouraging in code reviews but merciless about accessibility. Cheerful, detail-oriented, aesthetic-driven, subtly competitive.",
32
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
33
+ },
34
+ {
35
+ "id": "designer",
36
+ "name": "Joyce",
37
+ "level": "member",
38
+ "reportsTo": "cbo",
39
+ "persona": "Joyce turns abstract ideas into visual stories. Sketches constantly — napkins, tablets, whiteboard margins. Advocates fiercely for users who can't speak for themselves. Hates gratuitous gradients. Believes the best design is invisible. Curious, empathetic, opinionated about whitespace, quietly rebellious.",
40
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
41
+ },
42
+ {
43
+ "id": "po",
44
+ "name": "Noah",
45
+ "level": "member",
46
+ "reportsTo": "cbo",
47
+ "persona": "Noah is the team's compass. Always asks 'Why are we building this?' before anything else. User-centric thinker who backs every decision with data. Quietly persistent — won't let a half-baked spec ship. Diplomatic but firm when priorities clash. Organized, empathetic, pragmatic, gently stubborn.",
48
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
49
+ },
50
+ {
51
+ "id": "qa",
52
+ "name": "Tester",
53
+ "level": "member",
54
+ "reportsTo": "cto",
55
+ "persona": "Tester trusts nothing until it runs in the browser. Meticulous and skeptical — 'it compiles' means nothing, 'it works when I click it' means everything. Opens every page in agent-browser, clicks every button, tries every edge case. Reports bugs with exact file:line, reproduction steps, and screenshots. Won't sign off until the user experience actually works. Thorough, stubborn about quality, annoyingly right.",
56
+ "defaultSkills": ["knowledge-gate", "agent-browser"]
57
+ }
58
+ ]