openfleet 0.3.15 → 0.4.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/README.md +52 -2
- package/dist/agents/{reviewer.d.ts → architect.d.ts} +1 -1
- package/dist/agents/{planner.d.ts → builder.d.ts} +1 -1
- package/dist/agents/index.d.ts +6 -8
- package/dist/agents/{housekeeping.d.ts → introspector.d.ts} +1 -1
- package/dist/agents/names.d.ts +6 -8
- package/dist/agents/{actor.d.ts → recon.d.ts} +1 -1
- package/dist/agents/{reflector.d.ts → validator.d.ts} +1 -1
- package/dist/config.d.ts +14 -13
- package/dist/index.js +446 -873
- package/dist/models.d.ts +3 -3
- package/dist/templates/.openfleet/.templates/task-tree.md +3 -3
- package/dist/templates/.openfleet/README.md +28 -25
- package/dist/templates/.openfleet/VERSION +1 -0
- package/dist/templates/.openfleet/gitignore.template +2 -7
- package/dist/templates/.openfleet/migrations/0.4.0.md +74 -0
- package/dist/templates/.openfleet/{agents/Apollo.md → private/agents/Architect.md} +2 -2
- package/dist/templates/.openfleet/{agents/Hercules.md → private/agents/Builder.md} +2 -2
- package/dist/templates/.openfleet/{agents/Mnemosyne.md → private/agents/Introspector.md} +2 -40
- package/dist/templates/.openfleet/{agents/Athena.md → private/agents/Recon.md} +2 -2
- package/dist/templates/.openfleet/{agents/Chiron.md → private/agents/Validator.md} +2 -2
- package/dist/templates/.openfleet/{experience → private/experience}/README.md +1 -2
- package/dist/templates/.openfleet/private/preferences.md +113 -0
- package/dist/templates/.openfleet/public/standards/code-style.md +11 -0
- package/dist/transcript/hooks.d.ts +0 -13
- package/dist/utils/directory-init.d.ts +1 -0
- package/package.json +1 -1
- package/dist/agents/read-only.d.ts +0 -2
- package/dist/agents/scout.d.ts +0 -2
- package/dist/templates/.openfleet/experience/blunders/README.md +0 -6
- package/dist/templates/.openfleet/reviews/README.md +0 -15
- package/dist/templates/.openfleet/sessions/README.md +0 -16
- package/dist/templates/.openfleet/standards/code-style.md +0 -3
- package/dist/tools/save-conversation/counter.d.ts +0 -31
- package/dist/tools/save-conversation/session-writer.d.ts +0 -17
- package/dist/tools/save-conversation/slug-generator.d.ts +0 -14
- package/dist/tools/save-conversation/types.d.ts +0 -28
- /package/dist/templates/.openfleet/{agents → private/agents}/Zeus.md +0 -0
- /package/dist/templates/.openfleet/{experience → private/experience}/lessons/README.md +0 -0
- /package/dist/templates/.openfleet/{experience → private/experience}/runbooks/README.md +0 -0
- /package/dist/templates/.openfleet/{status.md → private/status.md} +0 -0
- /package/dist/templates/.openfleet/{stories → private/stories}/README.md +0 -0
- /package/dist/templates/.openfleet/{transcripts → private/transcripts}/README.md +0 -0
- /package/dist/templates/.openfleet/{docs → public/docs}/README.md +0 -0
- /package/dist/templates/.openfleet/{standards → public/standards}/README.md +0 -0
- /package/dist/templates/.openfleet/{standards → public/standards}/architecture.md +0 -0
- /package/dist/templates/.openfleet/{standards → public/standards}/review-checklist.md +0 -0
- /package/dist/templates/.openfleet/{standards → public/standards}/testing.md +0 -0
- /package/dist/templates/.openfleet/{experience → public}/troubleshooting/README.md +0 -0
package/dist/models.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export declare const models: {
|
|
|
25
25
|
readonly bigPickle: "opencode/big-pickle";
|
|
26
26
|
};
|
|
27
27
|
};
|
|
28
|
-
export declare const defaultModel:
|
|
29
|
-
export declare const bigModel:
|
|
30
|
-
export declare const smallModel:
|
|
28
|
+
export declare const defaultModel: string;
|
|
29
|
+
export declare const bigModel: string;
|
|
30
|
+
export declare const smallModel: string;
|
|
31
31
|
export declare const fallbackModel: "opencode/minimax-m2.5-free";
|
|
@@ -64,7 +64,7 @@ feat/auth-redesign
|
|
|
64
64
|
├──► task/06-10_refresh-tokens (created 2026-01-19) ← YOU ARE HERE
|
|
65
65
|
│ Phases: R✅ H✅ L🔄 I⏳
|
|
66
66
|
│ Branch: feat/auth-redesign/refresh-tokens
|
|
67
|
-
│ Agent:
|
|
67
|
+
│ Agent: Architect (reviewing LLD.md)
|
|
68
68
|
│ │
|
|
69
69
|
│ └──► branch/temp-skip-rotation (created 2026-01-20) ⏸️ escalated
|
|
70
70
|
│ Issue: Complex token rotation bug
|
|
@@ -76,7 +76,7 @@ feat/auth-redesign
|
|
|
76
76
|
|
|
77
77
|
---
|
|
78
78
|
|
|
79
|
-
## Instructions for
|
|
79
|
+
## Instructions for Orchestrator
|
|
80
80
|
|
|
81
81
|
**CRITICAL**: Update this file after EVERY change to THIS story:
|
|
82
82
|
|
|
@@ -91,7 +91,7 @@ The tree MUST show:
|
|
|
91
91
|
|
|
92
92
|
1. Full hierarchy (task → subtask → branches)
|
|
93
93
|
2. Current position marker (`← YOU ARE HERE`)
|
|
94
|
-
3. Active agents (`←
|
|
94
|
+
3. Active agents (`← Builder working`)
|
|
95
95
|
4. Phase progress for each node (R/H/L/I with status)
|
|
96
96
|
5. Branch status (merged, blocked, escalated)
|
|
97
97
|
6. Git branch names
|
|
@@ -8,7 +8,7 @@ not for humans, though it would be difficult to mess this up unintentionally.
|
|
|
8
8
|
|
|
9
9
|
## For Agents 🤖
|
|
10
10
|
|
|
11
|
-
Understand `## Structure`, then see `./status.md`, and other necessary
|
|
11
|
+
Understand `## Structure`, then see `./private/status.md`, and other necessary
|
|
12
12
|
files before starting your current task.
|
|
13
13
|
|
|
14
14
|
## Structure
|
|
@@ -16,30 +16,33 @@ files before starting your current task.
|
|
|
16
16
|
```
|
|
17
17
|
.openfleet/
|
|
18
18
|
├── README.md
|
|
19
|
-
├──
|
|
20
|
-
├──
|
|
21
|
-
│
|
|
22
|
-
|
|
23
|
-
│
|
|
24
|
-
|
|
25
|
-
│ ├──
|
|
26
|
-
│
|
|
27
|
-
├──
|
|
28
|
-
├──
|
|
29
|
-
├──
|
|
30
|
-
│ └──
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
│
|
|
36
|
-
├──
|
|
37
|
-
│ ├──
|
|
38
|
-
│ ├──
|
|
39
|
-
│ ├──
|
|
40
|
-
│ └──
|
|
41
|
-
|
|
42
|
-
|
|
19
|
+
├── VERSION # Stamped on init; absence/mismatch = migration needed
|
|
20
|
+
├── migrations/ # Per-version migration guides
|
|
21
|
+
│ └── 0.4.0.md
|
|
22
|
+
├── .templates/ # Templates for new stories/tasks
|
|
23
|
+
│ └── task-tree.md
|
|
24
|
+
├── public/ # Committed — shared knowledge
|
|
25
|
+
│ ├── docs/ # Compressed story learnings
|
|
26
|
+
│ ├── standards/ # Prescriptive guidelines
|
|
27
|
+
│ │ ├── code-style.md
|
|
28
|
+
│ │ ├── architecture.md
|
|
29
|
+
│ │ ├── testing.md
|
|
30
|
+
│ │ └── review-checklist.md
|
|
31
|
+
│ └── troubleshooting/ # Common error guides
|
|
32
|
+
└── private/ # Gitignored — machine-local
|
|
33
|
+
├── status.md # Anchor point - agent reads this first
|
|
34
|
+
├── agents/ # Per-agent scratchpads
|
|
35
|
+
│ ├── Zeus.md
|
|
36
|
+
│ ├── Recon.md
|
|
37
|
+
│ ├── Architect.md
|
|
38
|
+
│ ├── Builder.md
|
|
39
|
+
│ ├── Validator.md
|
|
40
|
+
│ └── Introspector.md
|
|
41
|
+
├── stories/ # Work organized by story/epic
|
|
42
|
+
├── experience/ # Self-healing long term memory
|
|
43
|
+
│ ├── runbooks/ # Used for recurring tasks
|
|
44
|
+
│ └── lessons/ # Used for learning from past mistakes and pitfalls
|
|
45
|
+
└── transcripts/ # Agent session transcripts
|
|
43
46
|
```
|
|
44
47
|
|
|
45
48
|
## Git worktree visualization
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.4.0
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Migration Guide: v0.4.0
|
|
2
|
+
|
|
3
|
+
## What Changed
|
|
4
|
+
|
|
5
|
+
- Directory restructured into `public/` (committed) and `private/` (gitignored)
|
|
6
|
+
- Agent files renamed: Athena→Recon, Apollo→Architect, Hercules→Builder, Chiron→Validator, Mnemosyne→Introspector
|
|
7
|
+
- `sessions/` and `reviews/` removed
|
|
8
|
+
|
|
9
|
+
## Migration Steps
|
|
10
|
+
|
|
11
|
+
Run these commands from inside your `.openfleet/` directory:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# 1. Create new structure
|
|
15
|
+
mkdir -p private/agents private/stories private/experience/runbooks private/experience/lessons private/transcripts
|
|
16
|
+
mkdir -p public/docs public/standards public/troubleshooting
|
|
17
|
+
|
|
18
|
+
# 2. Move agent files (with renames)
|
|
19
|
+
[ -f agents/Athena.md ] && mv agents/Athena.md private/agents/Recon.md
|
|
20
|
+
[ -f agents/Apollo.md ] && mv agents/Apollo.md private/agents/Architect.md
|
|
21
|
+
[ -f agents/Hercules.md ] && mv agents/Hercules.md private/agents/Builder.md
|
|
22
|
+
[ -f agents/Chiron.md ] && mv agents/Chiron.md private/agents/Validator.md
|
|
23
|
+
[ -f agents/Mnemosyne.md ] && mv agents/Mnemosyne.md private/agents/Introspector.md
|
|
24
|
+
[ -f agents/Zeus.md ] && mv agents/Zeus.md private/agents/Zeus.md
|
|
25
|
+
[ -d agents ] && rmdir agents 2>/dev/null
|
|
26
|
+
|
|
27
|
+
# 3. Move structural dirs
|
|
28
|
+
[ -d stories ] && mv stories private/stories
|
|
29
|
+
[ -f status.md ] && mv status.md private/status.md
|
|
30
|
+
[ -d transcripts ] && mv transcripts private/transcripts
|
|
31
|
+
|
|
32
|
+
# 4. Move experience subdirs
|
|
33
|
+
[ -d experience/runbooks ] && mv experience/runbooks private/experience/runbooks
|
|
34
|
+
[ -d experience/lessons ] && mv experience/lessons private/experience/lessons
|
|
35
|
+
[ -d experience/troubleshooting ] && mv experience/troubleshooting public/troubleshooting
|
|
36
|
+
|
|
37
|
+
# 5. Move public dirs
|
|
38
|
+
[ -d docs ] && mv docs public/docs
|
|
39
|
+
[ -d standards ] && mv standards public/standards
|
|
40
|
+
|
|
41
|
+
# 6. Clean up
|
|
42
|
+
rm -rf sessions reviews 2>/dev/null
|
|
43
|
+
rmdir experience 2>/dev/null
|
|
44
|
+
|
|
45
|
+
# 7. Update .gitignore
|
|
46
|
+
echo "private/" > .gitignore
|
|
47
|
+
|
|
48
|
+
# 8. Stamp version
|
|
49
|
+
echo "0.4.0" > VERSION
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Verify
|
|
53
|
+
|
|
54
|
+
After migration, your `.openfleet/` should look like:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
.openfleet/
|
|
58
|
+
├── VERSION
|
|
59
|
+
├── .gitignore # contains: private/
|
|
60
|
+
├── README.md
|
|
61
|
+
├── .templates/
|
|
62
|
+
├── migrations/
|
|
63
|
+
│ └── 0.4.0.md
|
|
64
|
+
├── public/
|
|
65
|
+
│ ├── docs/
|
|
66
|
+
│ ├── standards/
|
|
67
|
+
│ └── troubleshooting/
|
|
68
|
+
└── private/
|
|
69
|
+
├── status.md
|
|
70
|
+
├── agents/
|
|
71
|
+
├── stories/
|
|
72
|
+
├── experience/
|
|
73
|
+
└── transcripts/
|
|
74
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Introspector
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
_Knowledge management and reflection agent._
|
|
4
4
|
|
|
5
5
|
This is the index of accumulated experience. Consult before tackling unfamiliar problems.
|
|
6
6
|
|
|
@@ -20,10 +20,6 @@ _No guides yet._
|
|
|
20
20
|
|
|
21
21
|
_No lessons yet._
|
|
22
22
|
|
|
23
|
-
### Blunders to Avoid
|
|
24
|
-
|
|
25
|
-
_No blunders recorded._
|
|
26
|
-
|
|
27
23
|
---
|
|
28
24
|
|
|
29
25
|
## File Naming Conventions
|
|
@@ -52,14 +48,6 @@ Use lowercase kebab-case with suffix: `<topic>-lesson.md`
|
|
|
52
48
|
- `batch-database-queries-lesson.md`
|
|
53
49
|
- `early-return-pattern-lesson.md`
|
|
54
50
|
|
|
55
|
-
### Blunders
|
|
56
|
-
|
|
57
|
-
Use lowercase kebab-case with suffix: `<descriptive-name>-blunder.md`
|
|
58
|
-
|
|
59
|
-
- `api-key-exposure-blunder.md`
|
|
60
|
-
- `missing-null-check-blunder.md`
|
|
61
|
-
- `wrong-environment-deploy-blunder.md`
|
|
62
|
-
|
|
63
51
|
---
|
|
64
52
|
|
|
65
53
|
## Templates
|
|
@@ -139,32 +127,6 @@ Use lowercase kebab-case with suffix: `<descriptive-name>-blunder.md`
|
|
|
139
127
|
- <Links to relevant docs, code, or external resources>
|
|
140
128
|
```
|
|
141
129
|
|
|
142
|
-
### Blunder
|
|
143
|
-
|
|
144
|
-
```markdown
|
|
145
|
-
# <Brief title describing the blunder>
|
|
146
|
-
|
|
147
|
-
## What happened
|
|
148
|
-
|
|
149
|
-
<Description of the mistake - what was done wrong>
|
|
150
|
-
|
|
151
|
-
## Impact
|
|
152
|
-
|
|
153
|
-
<What went wrong as a result - consequences>
|
|
154
|
-
|
|
155
|
-
## Root cause
|
|
156
|
-
|
|
157
|
-
<Why it happened - the underlying reason>
|
|
158
|
-
|
|
159
|
-
## Prevention
|
|
160
|
-
|
|
161
|
-
<How to avoid this in the future - proactive measures>
|
|
162
|
-
|
|
163
|
-
## Detection
|
|
164
|
-
|
|
165
|
-
<How to catch early if it happens again - monitoring/review steps>
|
|
166
|
-
```
|
|
167
|
-
|
|
168
130
|
---
|
|
169
131
|
|
|
170
132
|
_Updated when new experience is captured._
|
|
@@ -8,8 +8,7 @@ Self-healing systems with long-term memory. Learned knowledge from past work.
|
|
|
8
8
|
experience/
|
|
9
9
|
├── runbooks/ # How-to guides for recurring tasks
|
|
10
10
|
├── troubleshooting/ # Problem → solution mappings
|
|
11
|
-
|
|
12
|
-
└── blunders/ # Mistakes to avoid
|
|
11
|
+
└── lessons/ # Insights, best practices, and mistakes to avoid
|
|
13
12
|
```
|
|
14
13
|
|
|
15
14
|
## Usage
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# User Preferences
|
|
2
|
+
|
|
3
|
+
Read this before starting any implementation task.
|
|
4
|
+
|
|
5
|
+
## Docstrings
|
|
6
|
+
|
|
7
|
+
- One-liner starts right after the opening `"""`
|
|
8
|
+
- Numbered bullet list of what the function does (if non-trivial)
|
|
9
|
+
- Optional `Example:` block for non-obvious usage
|
|
10
|
+
- No `Args` or `Returns` sections
|
|
11
|
+
- Add a blank line between the docstring and the code body
|
|
12
|
+
- Single-line docstring is fine for simple functions — don't overcomplicate
|
|
13
|
+
- No file-level docstrings
|
|
14
|
+
- No private function docstrings
|
|
15
|
+
|
|
16
|
+
## Comments
|
|
17
|
+
|
|
18
|
+
Code should be self-documenting. Avoid comments unless there is a genuine gotcha or
|
|
19
|
+
non-obvious complexity.
|
|
20
|
+
|
|
21
|
+
## Logging
|
|
22
|
+
|
|
23
|
+
**Use `logger.span()` for:**
|
|
24
|
+
|
|
25
|
+
- All database operations
|
|
26
|
+
- External API calls
|
|
27
|
+
- Business logic boundaries
|
|
28
|
+
- Any operation where timing/duration matters
|
|
29
|
+
|
|
30
|
+
**Use `logger.info()` for:**
|
|
31
|
+
|
|
32
|
+
- State-changing operations (create, update, delete) — audit trail
|
|
33
|
+
- Operation outcomes (success/failure messages)
|
|
34
|
+
- NOT for read operations (spans are sufficient)
|
|
35
|
+
|
|
36
|
+
**Span naming** — follow OpenTelemetry dot notation: `entity.action`
|
|
37
|
+
|
|
38
|
+
## Failing tests
|
|
39
|
+
|
|
40
|
+
If a test fails, do not simply rerun it with an increased timeout. Unless you have concrete
|
|
41
|
+
logs-based evidence that the failure is purely a timing issue, bumping the timeout is just
|
|
42
|
+
noise — the underlying problem will resurface.
|
|
43
|
+
|
|
44
|
+
Instead:
|
|
45
|
+
|
|
46
|
+
- **Read the logs.** What actually failed and why?
|
|
47
|
+
- **Check other metrics.** Is a dependency down? Is there a race condition? Did an assertion fail on wrong data?
|
|
48
|
+
- **Understand before acting.** A test that passes with a higher timeout is not a fixed test.
|
|
49
|
+
|
|
50
|
+
## Optional fields
|
|
51
|
+
|
|
52
|
+
Be deliberate about whether a field is truly optional. Loosely marking fields as optional
|
|
53
|
+
(`T | undefined`, `T | None`, `?: T`) forces every caller to add `if x` guards throughout
|
|
54
|
+
the codebase, spreading defensive boilerplate everywhere.
|
|
55
|
+
|
|
56
|
+
Before making a field optional, ask:
|
|
57
|
+
|
|
58
|
+
- **Is this field ever genuinely absent?** If it always exists after construction, make it required.
|
|
59
|
+
- **Are you making it optional just to avoid passing it at the call site?** That's the wrong fix — rework the constructor or factory instead.
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
// ❌ Loose — now every caller has to guard
|
|
63
|
+
interface Session {
|
|
64
|
+
id: string
|
|
65
|
+
agentName?: string // is this ever really missing?
|
|
66
|
+
}
|
|
67
|
+
if (session.agentName) { ... }
|
|
68
|
+
|
|
69
|
+
// ✅ Tight — guaranteed present, no guards needed
|
|
70
|
+
interface Session {
|
|
71
|
+
id: string
|
|
72
|
+
agentName: string
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Optional should mean **genuinely absent in valid states**, not **"I wasn't sure so I added a `?`"**.
|
|
77
|
+
|
|
78
|
+
## Code style
|
|
79
|
+
|
|
80
|
+
**Prefer Pydantic `BaseModel` over `dataclass`**
|
|
81
|
+
Pydantic gives you validation, serialization, and IDE support for free. Only reach for `dataclass` if you have a specific reason to avoid Pydantic.
|
|
82
|
+
|
|
83
|
+
**Prefer dependency injection over module-level instantiation**
|
|
84
|
+
Instantiating objects at the module level makes code hard to test and creates hidden coupling. Pass dependencies explicitly so they can be swapped, mocked, or configured at the call site.
|
|
85
|
+
|
|
86
|
+
```py
|
|
87
|
+
# ❌ Module-level — hidden, untestable
|
|
88
|
+
db = Database()
|
|
89
|
+
|
|
90
|
+
def get_user(id: str):
|
|
91
|
+
return db.find(id)
|
|
92
|
+
|
|
93
|
+
# ✅ Injected via dependencies.py
|
|
94
|
+
# dependencies.py
|
|
95
|
+
def get_db() -> Database:
|
|
96
|
+
return Database(settings.DATABASE_URL)
|
|
97
|
+
|
|
98
|
+
# router.py
|
|
99
|
+
@router.get("/users/{id}")
|
|
100
|
+
def get_user(id: str, db: Database = Depends(get_db)):
|
|
101
|
+
return db.find(id)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Prefer extracting logic into hooks over long components**
|
|
105
|
+
When a component grows complex, resist the urge to keep adding to it. Pull state and side-effect logic into a dedicated hook so the component stays focused on rendering.
|
|
106
|
+
|
|
107
|
+
## Function placement
|
|
108
|
+
|
|
109
|
+
When adding new methods or functions, place them thoughtfully:
|
|
110
|
+
|
|
111
|
+
- Public before private
|
|
112
|
+
- By importance: `start`, `run`, `process` near top; helpers near bottom
|
|
113
|
+
- Don't blindly append to the end of a file
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Code Style Standards
|
|
2
|
+
|
|
3
|
+
## Type definitions
|
|
4
|
+
|
|
5
|
+
Before defining a new type, always check:
|
|
6
|
+
|
|
7
|
+
1. **Does it already exist?** Search the codebase before creating a duplicate.
|
|
8
|
+
2. **Can it be imported from a 3rd-party library?** Prefer importing from the library
|
|
9
|
+
that owns the concept over redefining it locally.
|
|
10
|
+
|
|
11
|
+
Only define a new type if it genuinely doesn't exist anywhere reachable.
|
|
@@ -8,19 +8,6 @@ export declare function createTranscriptHooks(ctx: PluginInput): {
|
|
|
8
8
|
message: unknown;
|
|
9
9
|
parts: unknown[];
|
|
10
10
|
}) => Promise<void>;
|
|
11
|
-
"chat.model": (input: {
|
|
12
|
-
sessionID: string;
|
|
13
|
-
agent: string;
|
|
14
|
-
model: {
|
|
15
|
-
providerID: string;
|
|
16
|
-
modelID: string;
|
|
17
|
-
};
|
|
18
|
-
}, output: {
|
|
19
|
-
model: {
|
|
20
|
-
providerID: string;
|
|
21
|
-
modelID: string;
|
|
22
|
-
};
|
|
23
|
-
}) => Promise<void>;
|
|
24
11
|
"tool.execute.before": (input: {
|
|
25
12
|
sessionID: string;
|
|
26
13
|
tool: string;
|
package/package.json
CHANGED
package/dist/agents/scout.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# Reviews
|
|
2
|
-
|
|
3
|
-
Human review artifacts and feedback.
|
|
4
|
-
|
|
5
|
-
## Structure
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
reviews/
|
|
9
|
-
├── README.md # This file
|
|
10
|
-
└── YYYY-MM-DD_<topic>.md # Individual review records
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Usage
|
|
14
|
-
|
|
15
|
-
Store feedback from human reviews here for future reference.
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Sessions Directory
|
|
2
|
-
|
|
3
|
-
Conversation records organized by date.
|
|
4
|
-
|
|
5
|
-
## Structure
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
sessions/
|
|
9
|
-
└── YYYY-MM-DD/
|
|
10
|
-
└── NNN_topic-slug.md
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Usage
|
|
14
|
-
|
|
15
|
-
Sessions are auto-generated by the `save_conversation` tool.
|
|
16
|
-
Each session captures a complete conversation with metadata.
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gets the next counter for a given date.
|
|
3
|
-
*
|
|
4
|
-
* This function:
|
|
5
|
-
* 1. looks inside the date subdirectory (sessions/YYYY-MM-DD/)
|
|
6
|
-
* 2. extracts all counters from files matching NNN_slug.md pattern
|
|
7
|
-
* 3. finds the highest counter
|
|
8
|
-
* 4. returns next counter (highest + 1), zero-padded to 3 digits
|
|
9
|
-
*
|
|
10
|
-
* Example:
|
|
11
|
-
* >>> const counter = await getNextCounter("2025-12-23");
|
|
12
|
-
* >>> counter
|
|
13
|
-
* '003'
|
|
14
|
-
*/
|
|
15
|
-
export declare function getNextCounter(date: string): Promise<string>;
|
|
16
|
-
/**
|
|
17
|
-
* Gets current date in YYYY-MM-DD format (UTC).
|
|
18
|
-
*/
|
|
19
|
-
export declare function getCurrentDate(): string;
|
|
20
|
-
/**
|
|
21
|
-
* Validates date format (YYYY-MM-DD).
|
|
22
|
-
*/
|
|
23
|
-
export declare function isValidDateFormat(date: string): boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Gets all session files for a specific date.
|
|
26
|
-
*/
|
|
27
|
-
export declare function getSessionsForDate(date: string): string[];
|
|
28
|
-
/**
|
|
29
|
-
* Builds filename from counter and slug (NNN_slug.md format).
|
|
30
|
-
*/
|
|
31
|
-
export declare function buildFilename(counter: string, slug: string): string;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { SessionEntry } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* Writes a session entry to the sessions directory.
|
|
4
|
-
*
|
|
5
|
-
* This function:
|
|
6
|
-
* 1. ensures date subdirectory exists (sessions/YYYY-MM-DD/)
|
|
7
|
-
* 2. builds filename from counter and slug (NNN_slug.md)
|
|
8
|
-
* 3. generates enhanced session content
|
|
9
|
-
* 4. writes file atomically
|
|
10
|
-
* 5. returns full file path
|
|
11
|
-
*/
|
|
12
|
-
export declare function writeSession(entry: SessionEntry): string;
|
|
13
|
-
/**
|
|
14
|
-
* Calculates session duration from timestamp metadata.
|
|
15
|
-
* Returns formatted string like "45 minutes" or "2 hours 15 minutes".
|
|
16
|
-
*/
|
|
17
|
-
export declare function calculateDuration(startTime: Date, endTime: Date): string;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { SlugContext } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* Generates a semantic slug using simple context string.
|
|
4
|
-
*
|
|
5
|
-
* This function takes a context string (usually from user's note or session summary)
|
|
6
|
-
* and generates a kebab-case slug using Claude Haiku.
|
|
7
|
-
*
|
|
8
|
-
* Example:
|
|
9
|
-
* >>> const slug = await generateSlug("Implemented user authentication system");
|
|
10
|
-
* >>> slug
|
|
11
|
-
* 'implement-user-auth'
|
|
12
|
-
*/
|
|
13
|
-
export declare function generateSlug(contextString: string, context?: SlugContext): Promise<string>;
|
|
14
|
-
export declare function slugToTitle(slug: string): string;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export interface SaveConversationArgs {
|
|
2
|
-
note?: string;
|
|
3
|
-
}
|
|
4
|
-
export interface SessionEntry {
|
|
5
|
-
sessionID: string;
|
|
6
|
-
transcriptPath: string;
|
|
7
|
-
savedAt: string;
|
|
8
|
-
date: string;
|
|
9
|
-
counter: string;
|
|
10
|
-
slug: string;
|
|
11
|
-
title: string;
|
|
12
|
-
summary: string;
|
|
13
|
-
note?: string;
|
|
14
|
-
duration?: string;
|
|
15
|
-
messageCount: number;
|
|
16
|
-
tokensBefore: number;
|
|
17
|
-
tokensInput?: number;
|
|
18
|
-
tokensOutput?: number;
|
|
19
|
-
}
|
|
20
|
-
export interface SlugContext {
|
|
21
|
-
maxMessages?: number;
|
|
22
|
-
maxContextChars?: number;
|
|
23
|
-
}
|
|
24
|
-
export interface CounterInfo {
|
|
25
|
-
date: string;
|
|
26
|
-
counter: string;
|
|
27
|
-
highestFound: number;
|
|
28
|
-
}
|
|
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
|
|
File without changes
|