tycono 0.3.45-beta.2 → 0.3.45-beta.3

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 (113) hide show
  1. package/README.md +191 -162
  2. package/bin/tycono.ts +42 -10
  3. package/package.json +21 -15
  4. package/packages/server/bin/cli.js +35 -0
  5. package/packages/server/bin/server.ts +183 -0
  6. package/{src → packages/server/src}/api/src/create-server.ts +11 -3
  7. package/{src → packages/server/src}/api/src/engine/agent-loop.ts +30 -7
  8. package/{src → packages/server/src}/api/src/engine/context-assembler.ts +122 -57
  9. package/{src → packages/server/src}/api/src/engine/llm-adapter.ts +10 -7
  10. package/{src → packages/server/src}/api/src/engine/org-tree.ts +43 -3
  11. package/{src → packages/server/src}/api/src/engine/runners/claude-cli.ts +37 -15
  12. package/{src → packages/server/src}/api/src/engine/runners/types.ts +6 -0
  13. package/{src → packages/server/src}/api/src/engine/tools/executor.ts +65 -9
  14. package/{src → packages/server/src}/api/src/routes/execute.ts +221 -17
  15. package/packages/server/src/api/src/services/claude-md-manager.ts +190 -0
  16. package/{src → packages/server/src}/api/src/services/company-config.ts +1 -0
  17. package/{src → packages/server/src}/api/src/services/digest-engine.ts +4 -1
  18. package/packages/server/src/api/src/services/dispatch-classifier.ts +179 -0
  19. package/{src → packages/server/src}/api/src/services/execution-manager.ts +227 -21
  20. package/{src → packages/server/src}/api/src/services/file-reader.ts +4 -1
  21. package/packages/server/src/api/src/services/preset-loader.ts +310 -0
  22. package/{src → packages/server/src}/api/src/services/supervisor-heartbeat.ts +89 -9
  23. package/{src → packages/server/src}/api/src/services/wave-multiplexer.ts +18 -8
  24. package/{src → packages/server/src}/api/src/services/wave-tracker.ts +25 -0
  25. package/packages/server/src/core/scaffolder.ts +620 -0
  26. package/{src → packages/server/src}/shared/types.ts +3 -1
  27. package/packages/server/templates/CLAUDE.md.tmpl +152 -0
  28. package/packages/server/templates/agentic-knowledge-base.md +355 -0
  29. package/src/api/src/services/claude-md-manager.ts +0 -94
  30. package/src/api/src/services/preset-loader.ts +0 -149
  31. package/templates/CLAUDE.md.tmpl +0 -239
  32. /package/{src/web → packages/pixel}/dist/assets/index-BJyiMGkM.js +0 -0
  33. /package/{src/web → packages/pixel}/dist/assets/index-BOuHc64o.css +0 -0
  34. /package/{src/web → packages/pixel}/dist/assets/index-DDPzbp9E.js +0 -0
  35. /package/{src/web → packages/pixel}/dist/assets/index-DVKWFwwK.css +0 -0
  36. /package/{src/web → packages/pixel}/dist/assets/preview-app-DZ6WxhDc.js +0 -0
  37. /package/{src/web → packages/pixel}/dist/index.html +0 -0
  38. /package/{src/web → packages/pixel}/dist/tyconoforge.js +0 -0
  39. /package/{src → packages/server/src}/api/package.json +0 -0
  40. /package/{src → packages/server/src}/api/src/create-app.ts +0 -0
  41. /package/{src → packages/server/src}/api/src/engine/authority-validator.ts +0 -0
  42. /package/{src → packages/server/src}/api/src/engine/index.ts +0 -0
  43. /package/{src → packages/server/src}/api/src/engine/knowledge-gate.ts +0 -0
  44. /package/{src → packages/server/src}/api/src/engine/role-lifecycle.ts +0 -0
  45. /package/{src → packages/server/src}/api/src/engine/runners/direct-api.ts +0 -0
  46. /package/{src → packages/server/src}/api/src/engine/runners/index.ts +0 -0
  47. /package/{src → packages/server/src}/api/src/engine/skill-template.ts +0 -0
  48. /package/{src → packages/server/src}/api/src/engine/tools/definitions.ts +0 -0
  49. /package/{src → packages/server/src}/api/src/routes/active-sessions.ts +0 -0
  50. /package/{src → packages/server/src}/api/src/routes/coins.ts +0 -0
  51. /package/{src → packages/server/src}/api/src/routes/company.ts +0 -0
  52. /package/{src → packages/server/src}/api/src/routes/cost.ts +0 -0
  53. /package/{src → packages/server/src}/api/src/routes/engine.ts +0 -0
  54. /package/{src → packages/server/src}/api/src/routes/git.ts +0 -0
  55. /package/{src → packages/server/src}/api/src/routes/knowledge.ts +0 -0
  56. /package/{src → packages/server/src}/api/src/routes/operations.ts +0 -0
  57. /package/{src → packages/server/src}/api/src/routes/preferences.ts +0 -0
  58. /package/{src → packages/server/src}/api/src/routes/presets.ts +0 -0
  59. /package/{src → packages/server/src}/api/src/routes/projects.ts +0 -0
  60. /package/{src → packages/server/src}/api/src/routes/quests.ts +0 -0
  61. /package/{src → packages/server/src}/api/src/routes/roles.ts +0 -0
  62. /package/{src → packages/server/src}/api/src/routes/save.ts +0 -0
  63. /package/{src → packages/server/src}/api/src/routes/sessions.ts +0 -0
  64. /package/{src → packages/server/src}/api/src/routes/setup.ts +0 -0
  65. /package/{src → packages/server/src}/api/src/routes/skills.ts +0 -0
  66. /package/{src → packages/server/src}/api/src/routes/speech.ts +0 -0
  67. /package/{src → packages/server/src}/api/src/routes/supervision.ts +0 -0
  68. /package/{src → packages/server/src}/api/src/routes/sync.ts +0 -0
  69. /package/{src → packages/server/src}/api/src/server.ts +0 -0
  70. /package/{src → packages/server/src}/api/src/services/activity-stream.ts +0 -0
  71. /package/{src → packages/server/src}/api/src/services/activity-tracker.ts +0 -0
  72. /package/{src → packages/server/src}/api/src/services/database.ts +0 -0
  73. /package/{src → packages/server/src}/api/src/services/git-save.ts +0 -0
  74. /package/{src → packages/server/src}/api/src/services/job-manager.ts +0 -0
  75. /package/{src → packages/server/src}/api/src/services/knowledge-importer.ts +0 -0
  76. /package/{src → packages/server/src}/api/src/services/markdown-parser.ts +0 -0
  77. /package/{src → packages/server/src}/api/src/services/port-registry.ts +0 -0
  78. /package/{src → packages/server/src}/api/src/services/preferences.ts +0 -0
  79. /package/{src → packages/server/src}/api/src/services/pricing.ts +0 -0
  80. /package/{src → packages/server/src}/api/src/services/scaffold.ts +0 -0
  81. /package/{src → packages/server/src}/api/src/services/session-store.ts +0 -0
  82. /package/{src → packages/server/src}/api/src/services/team-recommender.ts +0 -0
  83. /package/{src → packages/server/src}/api/src/services/token-ledger.ts +0 -0
  84. /package/{src → packages/server/src}/api/src/services/wave-messages.ts +0 -0
  85. /package/{src → packages/server/src}/api/src/utils/role-level.ts +0 -0
  86. /package/{templates → packages/server/templates}/company.md.tmpl +0 -0
  87. /package/{templates → packages/server/templates}/gitignore.tmpl +0 -0
  88. /package/{templates → packages/server/templates}/roles.md.tmpl +0 -0
  89. /package/{templates → packages/server/templates}/skills/_manifest.json +0 -0
  90. /package/{templates → packages/server/templates}/skills/agent-browser/SKILL.md +0 -0
  91. /package/{templates → packages/server/templates}/skills/agent-browser/meta.json +0 -0
  92. /package/{templates → packages/server/templates}/skills/akb-linter/SKILL.md +0 -0
  93. /package/{templates → packages/server/templates}/skills/akb-linter/meta.json +0 -0
  94. /package/{templates → packages/server/templates}/skills/knowledge-gate/SKILL.md +0 -0
  95. /package/{templates → packages/server/templates}/skills/knowledge-gate/meta.json +0 -0
  96. /package/{templates → packages/server/templates}/teams/agency.json +0 -0
  97. /package/{templates → packages/server/templates}/teams/research.json +0 -0
  98. /package/{templates → packages/server/templates}/teams/startup.json +0 -0
  99. /package/{src/tui → packages/tui/src}/api.ts +0 -0
  100. /package/{src/tui → packages/tui/src}/app.tsx +0 -0
  101. /package/{src/tui → packages/tui/src}/components/CommandMode.tsx +0 -0
  102. /package/{src/tui → packages/tui/src}/components/OrgTree.tsx +0 -0
  103. /package/{src/tui → packages/tui/src}/components/PanelMode.tsx +0 -0
  104. /package/{src/tui → packages/tui/src}/components/SetupWizard.tsx +0 -0
  105. /package/{src/tui → packages/tui/src}/components/StatusBar.tsx +0 -0
  106. /package/{src/tui → packages/tui/src}/components/StreamView.tsx +0 -0
  107. /package/{src/tui → packages/tui/src}/hooks/useApi.ts +0 -0
  108. /package/{src/tui → packages/tui/src}/hooks/useCommand.ts +0 -0
  109. /package/{src/tui → packages/tui/src}/hooks/useSSE.ts +0 -0
  110. /package/{src/tui → packages/tui/src}/index.tsx +0 -0
  111. /package/{src/tui → packages/tui/src}/store.ts +0 -0
  112. /package/{src/tui → packages/tui/src}/theme.ts +0 -0
  113. /package/{src/tui → packages/tui/src}/utils/markdown.tsx +0 -0
@@ -1,149 +0,0 @@
1
- /**
2
- * preset-loader.ts — Load presets from knowledge/presets/
3
- *
4
- * Scans knowledge/presets/ for:
5
- * - _default.yaml (auto-generated from existing knowledge/roles/)
6
- * - {name}/preset.yaml (installed presets with roles/skills/knowledge)
7
- *
8
- * Returns PresetSummary[] for TUI display and full LoadedPreset for wave creation.
9
- */
10
- import fs from 'node:fs';
11
- import path from 'node:path';
12
- import YAML from 'yaml';
13
- import type { PresetDefinition, LoadedPreset, PresetSummary } from '../../../shared/types.js';
14
-
15
- const PRESETS_DIR = 'knowledge/presets';
16
- const DEFAULT_PRESET_FILE = '_default.yaml';
17
-
18
- /**
19
- * Build a default preset definition from existing roles/ directory.
20
- * This is generated on-the-fly — no need to persist _default.yaml.
21
- */
22
- function buildDefaultPreset(companyRoot: string): LoadedPreset {
23
- const rolesDir = path.join(companyRoot, 'knowledge', 'roles');
24
- const roles: string[] = [];
25
-
26
- if (fs.existsSync(rolesDir)) {
27
- const entries = fs.readdirSync(rolesDir, { withFileTypes: true });
28
- for (const entry of entries) {
29
- if (!entry.isDirectory()) continue;
30
- const yamlPath = path.join(rolesDir, entry.name, 'role.yaml');
31
- if (fs.existsSync(yamlPath)) {
32
- roles.push(entry.name);
33
- }
34
- }
35
- }
36
-
37
- return {
38
- definition: {
39
- spec: 'preset/v1',
40
- id: 'default',
41
- name: 'Default Team',
42
- tagline: 'Your current team',
43
- version: '1.0.0',
44
- roles,
45
- },
46
- path: null,
47
- isDefault: true,
48
- };
49
- }
50
-
51
- /**
52
- * Load a single preset from a directory containing preset.yaml.
53
- */
54
- function loadPresetFromDir(presetDir: string): LoadedPreset | null {
55
- const yamlPath = path.join(presetDir, 'preset.yaml');
56
- if (!fs.existsSync(yamlPath)) return null;
57
-
58
- try {
59
- const raw = YAML.parse(fs.readFileSync(yamlPath, 'utf-8')) as PresetDefinition;
60
- if (!raw.id || !raw.name || !Array.isArray(raw.roles)) return null;
61
-
62
- return {
63
- definition: {
64
- spec: raw.spec || 'preset/v1',
65
- id: raw.id,
66
- name: raw.name,
67
- tagline: raw.tagline,
68
- version: raw.version || '1.0.0',
69
- description: raw.description,
70
- author: raw.author,
71
- category: raw.category,
72
- industry: raw.industry,
73
- stage: raw.stage,
74
- use_case: raw.use_case,
75
- roles: raw.roles,
76
- knowledge_docs: raw.knowledge_docs,
77
- skills_count: raw.skills_count,
78
- pricing: raw.pricing,
79
- tags: raw.tags,
80
- languages: raw.languages,
81
- stats: raw.stats,
82
- wave_scoped: raw.wave_scoped,
83
- },
84
- path: presetDir,
85
- isDefault: false,
86
- };
87
- } catch {
88
- return null;
89
- }
90
- }
91
-
92
- /**
93
- * Load all presets from knowledge/presets/ + auto-generated default.
94
- * Returns [default, ...installed] — default is always first.
95
- */
96
- export function loadPresets(companyRoot: string): LoadedPreset[] {
97
- const presets: LoadedPreset[] = [];
98
-
99
- // 1. Default preset (always present)
100
- const defaultPreset = buildDefaultPreset(companyRoot);
101
-
102
- // Check if _default.yaml exists with overrides
103
- const defaultYamlPath = path.join(companyRoot, PRESETS_DIR, DEFAULT_PRESET_FILE);
104
- if (fs.existsSync(defaultYamlPath)) {
105
- try {
106
- const raw = YAML.parse(fs.readFileSync(defaultYamlPath, 'utf-8')) as Partial<PresetDefinition>;
107
- if (raw.name) defaultPreset.definition.name = raw.name;
108
- if (raw.tagline) defaultPreset.definition.tagline = raw.tagline;
109
- if (raw.description) defaultPreset.definition.description = raw.description;
110
- } catch { /* ignore malformed _default.yaml */ }
111
- }
112
-
113
- presets.push(defaultPreset);
114
-
115
- // 2. Installed presets from knowledge/presets/{name}/preset.yaml
116
- const presetsDir = path.join(companyRoot, PRESETS_DIR);
117
- if (fs.existsSync(presetsDir)) {
118
- const entries = fs.readdirSync(presetsDir, { withFileTypes: true });
119
- for (const entry of entries) {
120
- if (!entry.isDirectory()) continue;
121
- const preset = loadPresetFromDir(path.join(presetsDir, entry.name));
122
- if (preset) presets.push(preset);
123
- }
124
- }
125
-
126
- return presets;
127
- }
128
-
129
- /**
130
- * Get preset summaries for TUI display.
131
- */
132
- export function getPresetSummaries(companyRoot: string): PresetSummary[] {
133
- return loadPresets(companyRoot).map(p => ({
134
- id: p.definition.id,
135
- name: p.definition.name,
136
- description: p.definition.description ?? p.definition.tagline,
137
- rolesCount: p.definition.roles.length,
138
- roles: p.definition.roles,
139
- isDefault: p.isDefault,
140
- }));
141
- }
142
-
143
- /**
144
- * Find a specific preset by ID.
145
- */
146
- export function getPresetById(companyRoot: string, presetId: string): LoadedPreset | null {
147
- const presets = loadPresets(companyRoot);
148
- return presets.find(p => p.definition.id === presetId) ?? null;
149
- }
@@ -1,239 +0,0 @@
1
- # Company Rules
2
-
3
- > Powered by [Tycono](https://tycono.ai) — AI Company Operating Platform
4
-
5
- ---
6
-
7
- ## Task Routing
8
-
9
- | Task | Read First | Role |
10
- |------|-----------|------|
11
- | Product planning | `projects/` | PM |
12
- | Technical design | `architecture/` | CTO |
13
- | Implementation | `projects/*/tasks.md` | Engineer |
14
- | UI/UX Design | `projects/*/design/` | Designer |
15
- | Testing/QA | `projects/*/tasks.md` | QA |
16
- | E2E Testing | `e2e-experiments/tui-e2e-testcases.md` | QA |
17
- | Operations | `marketing/` | PM |
18
- | Business/Revenue | `company.md` | CBO |
19
- | Domain knowledge | `knowledge.md` | CBO |
20
-
21
- ---
22
-
23
- ## AKB Core Concepts
24
-
25
- > **AKB** = A file-based knowledge system where AI uses **search (Grep/Glob)** to find and **contextual links** to navigate
26
- >
27
- > Full reference: `methodologies/agentic-knowledge-base.md`
28
-
29
- | Layer | Role | AI Usage |
30
- |-------|------|----------|
31
- | **Root** (CLAUDE.md) | Minimal routing | Auto-injected as system prompt |
32
- | **Hub** ({folder}.md) | TOC + tool/guide references | **Check before starting work** |
33
- | **Node** (*.md) | Actual information | Search directly via Grep/Glob |
34
-
35
- ---
36
-
37
- ## AI Work Rules
38
-
39
- ### The Loop (Work Cycle)
40
-
41
- Every task follows this cycle. Implementing without completing the cycle is only half the job.
42
-
43
- | Step | Action | Why |
44
- |------|--------|-----|
45
- | ① Knowledge | Check/research related docs | Without context, direction goes wrong |
46
- | ② Task | Define task from docs | Without requirements, you'll rework |
47
- | ③ Implement | Execute the actual work | Value creation |
48
- | ④ Knowledge Update | Update docs with new insights | Prevents knowledge decay |
49
- | ⑤ Task Update | Update task status, check next work | Ensures continuity |
50
-
51
- **C-Level**: Execute The Loop autonomously — decompose tasks, analyze dependencies, dispatch independent tasks in parallel, collect results.
52
- **Member**: After implementation, always complete steps ④ and ⑤.
53
-
54
- ### Hub-First Principle
55
-
56
- > ⛔ **Read the relevant Hub document before starting any work.**
57
-
58
- Check the Task Routing table above to find the right "Read First" path.
59
- Every folder has a Hub file (`{folder-name}.md`) as its entry point.
60
- Read the Hub's existing tools/scripts/guides before starting work.
61
-
62
- ### Skill Check Principle
63
-
64
- > ⛔ **If `.claude/skills/{role-id}/SKILL.md` exists, you MUST read it.**
65
-
66
- Skill files define the tools, commands, and guides for each Role.
67
- Working without reading skills means missing existing tools and starting from scratch.
68
-
69
- ### Custom Rules (CRITICAL)
70
-
71
- > ⛔ **Before starting work, check if `custom-rules.md` exists and read it.**
72
- > This file contains company-specific rules, constraints, and processes.
73
- > If the file doesn't exist, ignore this section.
74
-
75
- ### Git Rules
76
-
77
- - Source code changes: feature branch → PR → merge
78
- - Direct push to main is prohibited
79
-
80
- ### Knowledge Gate
81
-
82
- > **Before creating a new document, search existing docs first.**
83
-
84
- ```
85
- 1. Summarize the insight + 3-5 keywords
86
- 2. Search existing docs with those keywords (grep 3+ terms)
87
- 3. Decide:
88
- - Overlap 70%+ -> Add to existing document
89
- - Overlap 30-70% -> New doc + cross-link to existing
90
- - Overlap <30% -> New document (register in Hub)
91
- - Temporary info -> Journal only (no new doc)
92
- 4. Cross-link to related docs
93
- 5. Register in the relevant Hub
94
- ```
95
-
96
- ### Document Hygiene
97
-
98
- | Rule | Description |
99
- |------|-------------|
100
- | No orphan docs | Every document must be reachable from a Hub |
101
- | Hub pattern | Each folder's entry point is `{folder}.md` |
102
- | Prefer existing | Adding 1 doc = maintenance cost. Strengthen existing > create new |
103
- | Cross-link | New docs must reference at least 1 related doc |
104
- | Source attribution | External research must cite source and date |
105
-
106
- ### Skills
107
-
108
- Roles have equipped **Skills** -- modular capability guides in `.claude/skills/`.
109
-
110
- - Role-specific skills: `.claude/skills/{role-id}/SKILL.md`
111
- - Shared skills: `.claude/skills/_shared/{skill-id}/SKILL.md`
112
- - Each Role's equipped skills are listed in `role.yaml` under `skills:`
113
- - **Always read SKILL.md before starting work** for that Role
114
-
115
- ### Agent Dispatch Rules (CRITICAL)
116
-
117
- > **Sub-agents (Agent/Task) do NOT automatically receive CLAUDE.md.**
118
- > **You MUST instruct them to read CLAUDE.md in the first line of the prompt.**
119
-
120
- Without the Root (CLAUDE.md), sub-agents skip Hubs and dive straight into code,
121
- missing existing tools, guides, and constraints.
122
-
123
- #### Required Prompt Pattern
124
-
125
- Every sub-agent prompt **must include**:
126
-
127
- 1. Instruction to read CLAUDE.md
128
- 2. **Required skill file paths** for the Role
129
-
130
- ```
131
- ⛔ AKB Rule: Read CLAUDE.md before starting work.
132
- Find the relevant Hub from the "Task Routing" table and read it first.
133
- Check the Hub's existing tools/guides/constraints before exploring code.
134
- ⛔ Read the required skill files below and use the tools/commands defined in them.
135
- ```
136
-
137
- #### Role Skill Mapping
138
-
139
- | Role | Required Skills (path: `.claude/skills/{name}/SKILL.md`) |
140
- |------|--------------------------------------------------------|
141
- | Each Role | `{role-id}` + shared skills listed in `role.yaml` |
142
-
143
- > Check each Role's `role.yaml` `skills:` field for the exact list.
144
-
145
- ### Self-Verification Before Escalation (CRITICAL)
146
-
147
- > **Before saying "I can't" or "user action needed", check your own tools/skills first.**
148
-
149
- #### Checklist (before reporting inability)
150
-
151
- ```
152
- □ 1. Check CLAUDE.md routing table for relevant skills/tools
153
- □ 2. Glob search .claude/skills/ for related skills
154
- □ 3. Read the skill and determine if it can solve the problem
155
- □ 4. Only if all above fail → Report: "Tried X but unable due to [specific reason]"
156
- ```
157
-
158
- ### Exploration Depth
159
-
160
- > **Don't stop at Hubs. Explore detailed documents for thorough understanding.**
161
-
162
- | Question Type | Minimum | Additional |
163
- |--------------|---------|------------|
164
- | Implementation | Hub | Related Node |
165
- | Debugging | Hub | Related issues/logs |
166
- | **Strategy/Design** | Hub | **Design docs, past decisions, architecture details** |
167
- | **New Feature** | Hub | **Existing implementation patterns, related architecture** |
168
-
169
- ### Skill Synchronization (CRITICAL)
170
-
171
- > **When changing code/processes, update related `.claude/skills/` SKILL.md files too.**
172
-
173
- | Change Type | Skill Update |
174
- |-------------|-------------|
175
- | API endpoint change | Update API reference |
176
- | New tool/script added | Add to tool listing |
177
- | Process change | Update procedure guide |
178
- | Feature removed | Remove related section |
179
-
180
- ### AKB Management (CRITICAL)
181
-
182
- > **Every Role manages knowledge as part of their work. Don't just code and stop.**
183
-
184
- After completing any task, check:
185
-
186
- | # | Item | Description |
187
- |---|------|-------------|
188
- | 1 | **New knowledge?** | Did this task produce new insights/decisions/analysis? |
189
- | 2 | **Search existing docs** | Are there related docs already? (grep 3+ keywords) |
190
- | 3 | **Decide location** | Add to existing doc vs create new (prefer existing) |
191
- | 4 | **Hub connection** | Is the new/updated doc reachable from a Hub? |
192
- | 5 | **Cross-link** | Are there mutual references between related docs? |
193
- | 6 | **Task update** | Is the task status updated? Next work identified? |
194
-
195
- ---
196
-
197
- ## Folder Structure
198
-
199
- ```
200
- {project}/
201
- ├── knowledge/ ← Tycono world. AI agent's cwd. Git root.
202
- │ ├── CLAUDE.md ← Only AI entry point
203
- │ ├── .claude/skills/ ← Role skill guides
204
- │ │ ├── _shared/
205
- │ │ └── {role-id}/SKILL.md
206
- │ ├── roles/
207
- │ │ ├── roles.md ← Hub
208
- │ │ └── {role-id}/
209
- │ │ ├── role.yaml
210
- │ │ ├── profile.md
211
- │ │ └── journal/
212
- │ ├── architecture/ ← Hub (technical architecture)
213
- │ ├── projects/ ← Hub (project tracking)
214
- │ ├── decisions/ ← CEO decisions
215
- │ ├── methodologies/ ← Frameworks & principles
216
- │ ├── presets/ ← Team presets
217
- │ ├── marketing/ ← Hub (SNS, launch, SEO)
218
- │ ├── e2e-experiments/ ← Hub (E2E test records)
219
- │ ├── company.md ← Company info
220
- │ ├── custom-rules.md ← Company custom rules (user owned)
221
- │ └── knowledge.md ← Hub (domain knowledge index)
222
-
223
- ├── .tycono/ ← Operational data (outside git)
224
- │ ├── config.json ← Engine settings, codeRoots
225
- │ ├── tycono.db ← SQLite (conversation history)
226
- │ ├── preferences.json ← UI settings
227
- │ ├── waves/ ← Wave execution logs
228
- │ ├── sessions/ ← Session state
229
- │ ├── standup/ ← Daily standups
230
- │ ├── cost/ ← Token cost tracking
231
- │ └── activity-streams/ ← SSE event logs (runtime)
232
-
233
- └── apps/ ← Code (default monorepo, outside git)
234
- ```
235
-
236
- ---
237
-
238
- <!-- tycono:managed v{{VERSION}} — This file is managed by Tycono. Do not edit manually. -->
239
- <!-- Company-specific rules go in custom-rules.md (knowledge/ root) -->
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes