@fifine/aim-studio 0.0.2 → 0.0.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.
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +123 -101
- package/dist/commands/init.js.map +1 -1
- package/dist/configurators/workflow.d.ts.map +1 -1
- package/dist/configurators/workflow.js +91 -65
- package/dist/configurators/workflow.js.map +1 -1
- package/dist/templates/aim/scripts/common/paths.py +3 -2
- package/dist/templates/aim/scripts/export.py +427 -0
- package/dist/templates/claude/commands/aim/export.md +89 -115
- package/dist/templates/claude/commands/aim/onboard.md +10 -8
- package/dist/templates/claude/commands/aim/start.md +104 -37
- package/dist/templates/claude/hooks/inject-subagent-context.py +6 -10
- package/dist/templates/claude/hooks/session-start.py +134 -24
- package/dist/templates/markdown/index.d.ts +5 -0
- package/dist/templates/markdown/index.d.ts.map +1 -1
- package/dist/templates/markdown/index.js +6 -0
- package/dist/templates/markdown/index.js.map +1 -1
- package/dist/templates/markdown/spec/cli/directory-structure.md.txt +71 -0
- package/dist/templates/markdown/spec/cli/error-handling.md.txt +91 -0
- package/dist/templates/markdown/spec/cli/index.md.txt +37 -0
- package/dist/templates/markdown/spec/cli/options-flags.md.txt +71 -0
- package/dist/templates/markdown/spec/cli/output-formatting.md.txt +93 -0
- package/dist/utils/project-detector.d.ts +1 -1
- package/dist/utils/project-detector.d.ts.map +1 -1
- package/dist/utils/project-detector.js +20 -0
- package/dist/utils/project-detector.js.map +1 -1
- package/package.json +1 -1
- package/dist/templates/claude/commands/trellis/before-backend-dev.md +0 -13
- package/dist/templates/claude/commands/trellis/before-frontend-dev.md +0 -13
- package/dist/templates/claude/commands/trellis/break-loop.md +0 -125
- package/dist/templates/claude/commands/trellis/check-backend.md +0 -13
- package/dist/templates/claude/commands/trellis/check-cross-layer.md +0 -153
- package/dist/templates/claude/commands/trellis/check-frontend.md +0 -13
- package/dist/templates/claude/commands/trellis/create-command.md +0 -154
- package/dist/templates/claude/commands/trellis/finish-work.md +0 -129
- package/dist/templates/claude/commands/trellis/integrate-skill.md +0 -219
- package/dist/templates/claude/commands/trellis/onboard.md +0 -358
- package/dist/templates/claude/commands/trellis/parallel.md +0 -193
- package/dist/templates/claude/commands/trellis/record-session.md +0 -62
- package/dist/templates/claude/commands/trellis/start.md +0 -280
- package/dist/templates/claude/commands/trellis/update-spec.md +0 -285
- package/dist/templates/trellis/gitignore.txt +0 -29
- package/dist/templates/trellis/index.d.ts +0 -49
- package/dist/templates/trellis/index.d.ts.map +0 -1
- package/dist/templates/trellis/index.js +0 -92
- package/dist/templates/trellis/index.js.map +0 -1
- package/dist/templates/trellis/scripts/__init__.py +0 -5
- package/dist/templates/trellis/scripts/add_session.py +0 -392
- package/dist/templates/trellis/scripts/common/__init__.py +0 -80
- package/dist/templates/trellis/scripts/common/cli_adapter.py +0 -435
- package/dist/templates/trellis/scripts/common/developer.py +0 -190
- package/dist/templates/trellis/scripts/common/git_context.py +0 -383
- package/dist/templates/trellis/scripts/common/paths.py +0 -347
- package/dist/templates/trellis/scripts/common/phase.py +0 -253
- package/dist/templates/trellis/scripts/common/registry.py +0 -366
- package/dist/templates/trellis/scripts/common/task_queue.py +0 -255
- package/dist/templates/trellis/scripts/common/task_utils.py +0 -178
- package/dist/templates/trellis/scripts/common/worktree.py +0 -219
- package/dist/templates/trellis/scripts/create_bootstrap.py +0 -290
- package/dist/templates/trellis/scripts/get_context.py +0 -16
- package/dist/templates/trellis/scripts/get_developer.py +0 -26
- package/dist/templates/trellis/scripts/init_developer.py +0 -51
- package/dist/templates/trellis/scripts/multi_agent/__init__.py +0 -5
- package/dist/templates/trellis/scripts/multi_agent/cleanup.py +0 -403
- package/dist/templates/trellis/scripts/multi_agent/create_pr.py +0 -329
- package/dist/templates/trellis/scripts/multi_agent/plan.py +0 -233
- package/dist/templates/trellis/scripts/multi_agent/start.py +0 -461
- package/dist/templates/trellis/scripts/multi_agent/status.py +0 -817
- package/dist/templates/trellis/scripts/task.py +0 -1056
- package/dist/templates/trellis/scripts-shell-archive/add-session.sh +0 -384
- package/dist/templates/trellis/scripts-shell-archive/common/developer.sh +0 -129
- package/dist/templates/trellis/scripts-shell-archive/common/git-context.sh +0 -263
- package/dist/templates/trellis/scripts-shell-archive/common/paths.sh +0 -208
- package/dist/templates/trellis/scripts-shell-archive/common/phase.sh +0 -150
- package/dist/templates/trellis/scripts-shell-archive/common/registry.sh +0 -247
- package/dist/templates/trellis/scripts-shell-archive/common/task-queue.sh +0 -142
- package/dist/templates/trellis/scripts-shell-archive/common/task-utils.sh +0 -151
- package/dist/templates/trellis/scripts-shell-archive/common/worktree.sh +0 -128
- package/dist/templates/trellis/scripts-shell-archive/create-bootstrap.sh +0 -299
- package/dist/templates/trellis/scripts-shell-archive/get-context.sh +0 -7
- package/dist/templates/trellis/scripts-shell-archive/get-developer.sh +0 -15
- package/dist/templates/trellis/scripts-shell-archive/init-developer.sh +0 -34
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/cleanup.sh +0 -396
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/create-pr.sh +0 -241
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/plan.sh +0 -207
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/start.sh +0 -317
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/status.sh +0 -828
- package/dist/templates/trellis/scripts-shell-archive/task.sh +0 -1204
- package/dist/templates/trellis/tasks/.gitkeep +0 -0
- package/dist/templates/trellis/workflow.md +0 -416
- package/dist/templates/trellis/worktree.yaml +0 -47
|
@@ -1,384 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Add a new session to journal file and update index.md
|
|
3
|
-
#
|
|
4
|
-
# Usage:
|
|
5
|
-
# ./.trellis/scripts/add-session.sh --title "Title" --commit "hash" --summary "Summary"
|
|
6
|
-
# echo "content" | ./.trellis/scripts/add-session.sh --title "Title" --commit "hash"
|
|
7
|
-
|
|
8
|
-
set -e
|
|
9
|
-
|
|
10
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
11
|
-
source "$SCRIPT_DIR/common/paths.sh"
|
|
12
|
-
source "$SCRIPT_DIR/common/developer.sh"
|
|
13
|
-
|
|
14
|
-
MAX_LINES=2000
|
|
15
|
-
TODAY=$(date +%Y-%m-%d)
|
|
16
|
-
|
|
17
|
-
# Ensure developer is initialized
|
|
18
|
-
ensure_developer
|
|
19
|
-
|
|
20
|
-
DEVELOPER=$(get_developer)
|
|
21
|
-
REPO_ROOT=$(get_repo_root)
|
|
22
|
-
DEV_DIR="$REPO_ROOT/$DIR_WORKFLOW/$DIR_WORKSPACE/$DEVELOPER"
|
|
23
|
-
INDEX_FILE="$DEV_DIR/index.md"
|
|
24
|
-
|
|
25
|
-
# =============================================================================
|
|
26
|
-
# Helper Functions
|
|
27
|
-
# =============================================================================
|
|
28
|
-
|
|
29
|
-
get_latest_journal_info() {
|
|
30
|
-
local latest_file=""
|
|
31
|
-
local latest_num=-1 # Start at -1 so journal-0.md can be detected (0 > -1)
|
|
32
|
-
|
|
33
|
-
for f in "$DEV_DIR"/${FILE_JOURNAL_PREFIX}*.md; do
|
|
34
|
-
if [[ -f "$f" ]]; then
|
|
35
|
-
local num=$(basename "$f" | sed "s/${FILE_JOURNAL_PREFIX}\([0-9]*\)\.md/\1/")
|
|
36
|
-
if [[ "$num" -gt "$latest_num" ]]; then
|
|
37
|
-
latest_num=$num
|
|
38
|
-
latest_file="$f"
|
|
39
|
-
fi
|
|
40
|
-
fi
|
|
41
|
-
done
|
|
42
|
-
|
|
43
|
-
if [[ -n "$latest_file" ]]; then
|
|
44
|
-
local lines=$(wc -l < "$latest_file" | tr -d ' ')
|
|
45
|
-
echo "$latest_file:$latest_num:$lines"
|
|
46
|
-
else
|
|
47
|
-
echo ":0:0"
|
|
48
|
-
fi
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
get_current_session() {
|
|
52
|
-
local line=$(grep "Total Sessions" "$INDEX_FILE" 2>/dev/null | head -1)
|
|
53
|
-
echo "$line" | sed 's/.*: //' | tr -d ' '
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
count_journal_files() {
|
|
57
|
-
local result=""
|
|
58
|
-
local journal_info=$(get_latest_journal_info)
|
|
59
|
-
local active_num=$(echo "$journal_info" | cut -d: -f2)
|
|
60
|
-
local active_file="${FILE_JOURNAL_PREFIX}$active_num.md"
|
|
61
|
-
|
|
62
|
-
for f in $(ls -v "$DEV_DIR"/${FILE_JOURNAL_PREFIX}*.md 2>/dev/null | sort -t- -k2 -n -r); do
|
|
63
|
-
if [[ -f "$f" ]]; then
|
|
64
|
-
local filename=$(basename "$f")
|
|
65
|
-
local lines=$(wc -l < "$f" | tr -d ' ')
|
|
66
|
-
|
|
67
|
-
local status="Archived"
|
|
68
|
-
if [[ "$filename" == "$active_file" ]]; then
|
|
69
|
-
status="Active"
|
|
70
|
-
fi
|
|
71
|
-
|
|
72
|
-
result="${result}| \`$filename\` | ~$lines | $status |
|
|
73
|
-
"
|
|
74
|
-
fi
|
|
75
|
-
done
|
|
76
|
-
echo "$result" | sed '/^$/d'
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
create_new_journal_file() {
|
|
80
|
-
local num=$1
|
|
81
|
-
local prev_num=$((num - 1))
|
|
82
|
-
local new_file="$DEV_DIR/${FILE_JOURNAL_PREFIX}$num.md"
|
|
83
|
-
|
|
84
|
-
cat > "$new_file" << EOF
|
|
85
|
-
# Journal - $DEVELOPER (Part $num)
|
|
86
|
-
|
|
87
|
-
> Continuation from \`${FILE_JOURNAL_PREFIX}$prev_num.md\` (archived at ~$MAX_LINES lines)
|
|
88
|
-
> Started: $TODAY
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
EOF
|
|
93
|
-
echo "$new_file"
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
generate_session_content() {
|
|
97
|
-
local session_num=$1
|
|
98
|
-
local title=$2
|
|
99
|
-
local commit=$3
|
|
100
|
-
local summary=$4
|
|
101
|
-
local extra_content=$5
|
|
102
|
-
|
|
103
|
-
local commit_table=""
|
|
104
|
-
if [[ -n "$commit" && "$commit" != "-" ]]; then
|
|
105
|
-
commit_table="| Hash | Message |
|
|
106
|
-
|------|---------|"
|
|
107
|
-
IFS=',' read -ra COMMITS <<< "$commit"
|
|
108
|
-
for c in "${COMMITS[@]}"; do
|
|
109
|
-
c=$(echo "$c" | tr -d ' ')
|
|
110
|
-
commit_table="$commit_table
|
|
111
|
-
| \`$c\` | (see git log) |"
|
|
112
|
-
done
|
|
113
|
-
else
|
|
114
|
-
commit_table="(No commits - planning session)"
|
|
115
|
-
fi
|
|
116
|
-
|
|
117
|
-
cat << EOF
|
|
118
|
-
|
|
119
|
-
## Session $session_num: $title
|
|
120
|
-
|
|
121
|
-
**Date**: $TODAY
|
|
122
|
-
**Task**: $title
|
|
123
|
-
|
|
124
|
-
### Summary
|
|
125
|
-
|
|
126
|
-
$summary
|
|
127
|
-
|
|
128
|
-
### Main Changes
|
|
129
|
-
|
|
130
|
-
$extra_content
|
|
131
|
-
|
|
132
|
-
### Git Commits
|
|
133
|
-
|
|
134
|
-
$commit_table
|
|
135
|
-
|
|
136
|
-
### Testing
|
|
137
|
-
|
|
138
|
-
- [OK] (Add test results)
|
|
139
|
-
|
|
140
|
-
### Status
|
|
141
|
-
|
|
142
|
-
[OK] **Completed**
|
|
143
|
-
|
|
144
|
-
### Next Steps
|
|
145
|
-
|
|
146
|
-
- None - task complete
|
|
147
|
-
EOF
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
# =============================================================================
|
|
151
|
-
# Update Index.md
|
|
152
|
-
# =============================================================================
|
|
153
|
-
|
|
154
|
-
update_index() {
|
|
155
|
-
local title="$1"
|
|
156
|
-
local commit="$2"
|
|
157
|
-
local new_session="$3"
|
|
158
|
-
local active_file="$4"
|
|
159
|
-
|
|
160
|
-
# Format commit for display
|
|
161
|
-
local commit_display="-"
|
|
162
|
-
if [[ -n "$commit" && "$commit" != "-" ]]; then
|
|
163
|
-
commit_display=$(echo "$commit" | sed 's/,/, /g' | sed 's/\([a-f0-9]\{7,\}\)/`\1`/g')
|
|
164
|
-
fi
|
|
165
|
-
|
|
166
|
-
local files_table=$(count_journal_files)
|
|
167
|
-
|
|
168
|
-
echo "Updating index.md for session $new_session..."
|
|
169
|
-
echo " Title: $title"
|
|
170
|
-
echo " Commit: $commit_display"
|
|
171
|
-
echo " Active File: $active_file"
|
|
172
|
-
echo ""
|
|
173
|
-
|
|
174
|
-
if ! grep -q "@@@auto:current-status" "$INDEX_FILE"; then
|
|
175
|
-
echo "Error: Markers not found in index.md. Please ensure markers exist." >&2
|
|
176
|
-
exit 1
|
|
177
|
-
fi
|
|
178
|
-
|
|
179
|
-
local tmp_file=$(mktemp)
|
|
180
|
-
|
|
181
|
-
local in_current_status=false
|
|
182
|
-
local in_active_documents=false
|
|
183
|
-
local in_session_history=false
|
|
184
|
-
local header_written=false
|
|
185
|
-
|
|
186
|
-
while IFS= read -r line || [[ -n "$line" ]]; do
|
|
187
|
-
if [[ "$line" == *"@@@auto:current-status"* ]]; then
|
|
188
|
-
echo "$line" >> "$tmp_file"
|
|
189
|
-
in_current_status=true
|
|
190
|
-
echo "- **Active File**: \`$active_file\`" >> "$tmp_file"
|
|
191
|
-
echo "- **Total Sessions**: $new_session" >> "$tmp_file"
|
|
192
|
-
echo "- **Last Active**: $TODAY" >> "$tmp_file"
|
|
193
|
-
continue
|
|
194
|
-
fi
|
|
195
|
-
|
|
196
|
-
if [[ "$line" == *"@@@/auto:current-status"* ]]; then
|
|
197
|
-
in_current_status=false
|
|
198
|
-
echo "$line" >> "$tmp_file"
|
|
199
|
-
continue
|
|
200
|
-
fi
|
|
201
|
-
|
|
202
|
-
if [[ "$line" == *"@@@auto:active-documents"* ]]; then
|
|
203
|
-
echo "$line" >> "$tmp_file"
|
|
204
|
-
in_active_documents=true
|
|
205
|
-
echo "| File | Lines | Status |" >> "$tmp_file"
|
|
206
|
-
echo "|------|-------|--------|" >> "$tmp_file"
|
|
207
|
-
echo "$files_table" >> "$tmp_file"
|
|
208
|
-
continue
|
|
209
|
-
fi
|
|
210
|
-
|
|
211
|
-
if [[ "$line" == *"@@@/auto:active-documents"* ]]; then
|
|
212
|
-
in_active_documents=false
|
|
213
|
-
echo "$line" >> "$tmp_file"
|
|
214
|
-
continue
|
|
215
|
-
fi
|
|
216
|
-
|
|
217
|
-
if [[ "$line" == *"@@@auto:session-history"* ]]; then
|
|
218
|
-
echo "$line" >> "$tmp_file"
|
|
219
|
-
in_session_history=true
|
|
220
|
-
header_written=false
|
|
221
|
-
continue
|
|
222
|
-
fi
|
|
223
|
-
|
|
224
|
-
if [[ "$line" == *"@@@/auto:session-history"* ]]; then
|
|
225
|
-
in_session_history=false
|
|
226
|
-
echo "$line" >> "$tmp_file"
|
|
227
|
-
continue
|
|
228
|
-
fi
|
|
229
|
-
|
|
230
|
-
if $in_current_status; then
|
|
231
|
-
continue
|
|
232
|
-
fi
|
|
233
|
-
|
|
234
|
-
if $in_active_documents; then
|
|
235
|
-
continue
|
|
236
|
-
fi
|
|
237
|
-
|
|
238
|
-
if $in_session_history; then
|
|
239
|
-
echo "$line" >> "$tmp_file"
|
|
240
|
-
if [[ "$line" == "|---"* ]] && ! $header_written; then
|
|
241
|
-
echo "| $new_session | $TODAY | $title | $commit_display |" >> "$tmp_file"
|
|
242
|
-
header_written=true
|
|
243
|
-
fi
|
|
244
|
-
continue
|
|
245
|
-
fi
|
|
246
|
-
|
|
247
|
-
echo "$line" >> "$tmp_file"
|
|
248
|
-
done < "$INDEX_FILE"
|
|
249
|
-
|
|
250
|
-
mv "$tmp_file" "$INDEX_FILE"
|
|
251
|
-
|
|
252
|
-
echo "[OK] Updated index.md successfully!"
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
# =============================================================================
|
|
256
|
-
# Main Function
|
|
257
|
-
# =============================================================================
|
|
258
|
-
|
|
259
|
-
add_session() {
|
|
260
|
-
local title=""
|
|
261
|
-
local commit="-"
|
|
262
|
-
local summary="(Add summary)"
|
|
263
|
-
local content_file=""
|
|
264
|
-
local extra_content="(Add details)"
|
|
265
|
-
|
|
266
|
-
while [[ $# -gt 0 ]]; do
|
|
267
|
-
case $1 in
|
|
268
|
-
--title)
|
|
269
|
-
title="$2"
|
|
270
|
-
shift 2
|
|
271
|
-
;;
|
|
272
|
-
--commit)
|
|
273
|
-
commit="$2"
|
|
274
|
-
shift 2
|
|
275
|
-
;;
|
|
276
|
-
--summary)
|
|
277
|
-
summary="$2"
|
|
278
|
-
shift 2
|
|
279
|
-
;;
|
|
280
|
-
--content-file)
|
|
281
|
-
content_file="$2"
|
|
282
|
-
shift 2
|
|
283
|
-
;;
|
|
284
|
-
*)
|
|
285
|
-
shift
|
|
286
|
-
;;
|
|
287
|
-
esac
|
|
288
|
-
done
|
|
289
|
-
|
|
290
|
-
if [[ -z "$title" ]]; then
|
|
291
|
-
echo "Error: --title is required" >&2
|
|
292
|
-
echo "Usage: $0 --title \"Session Title\" [--commit \"hash1,hash2\"] [--summary \"Brief summary\"]" >&2
|
|
293
|
-
exit 1
|
|
294
|
-
fi
|
|
295
|
-
|
|
296
|
-
if [[ -n "$content_file" && -f "$content_file" ]]; then
|
|
297
|
-
extra_content=$(cat "$content_file")
|
|
298
|
-
elif [[ ! -t 0 ]]; then
|
|
299
|
-
extra_content=$(cat)
|
|
300
|
-
fi
|
|
301
|
-
|
|
302
|
-
local journal_info=$(get_latest_journal_info)
|
|
303
|
-
local current_file=$(echo "$journal_info" | cut -d: -f1)
|
|
304
|
-
local current_num=$(echo "$journal_info" | cut -d: -f2)
|
|
305
|
-
local current_lines=$(echo "$journal_info" | cut -d: -f3)
|
|
306
|
-
local current_session=$(get_current_session)
|
|
307
|
-
local new_session=$((current_session + 1))
|
|
308
|
-
|
|
309
|
-
local session_content=$(generate_session_content "$new_session" "$title" "$commit" "$summary" "$extra_content")
|
|
310
|
-
local content_lines=$(echo "$session_content" | wc -l | tr -d ' ')
|
|
311
|
-
|
|
312
|
-
echo "========================================" >&2
|
|
313
|
-
echo "ADD SESSION" >&2
|
|
314
|
-
echo "========================================" >&2
|
|
315
|
-
echo "" >&2
|
|
316
|
-
echo "Session: $new_session" >&2
|
|
317
|
-
echo "Title: $title" >&2
|
|
318
|
-
echo "Commit: $commit" >&2
|
|
319
|
-
echo "" >&2
|
|
320
|
-
echo "Current journal file: ${FILE_JOURNAL_PREFIX}$current_num.md" >&2
|
|
321
|
-
echo "Current lines: $current_lines" >&2
|
|
322
|
-
echo "New content lines: $content_lines" >&2
|
|
323
|
-
echo "Total after append: $((current_lines + content_lines))" >&2
|
|
324
|
-
echo "" >&2
|
|
325
|
-
|
|
326
|
-
local target_file="$current_file"
|
|
327
|
-
local target_num=$current_num
|
|
328
|
-
|
|
329
|
-
if [[ $((current_lines + content_lines)) -gt $MAX_LINES ]]; then
|
|
330
|
-
target_num=$((current_num + 1))
|
|
331
|
-
echo "[!] Exceeds $MAX_LINES lines, creating ${FILE_JOURNAL_PREFIX}$target_num.md" >&2
|
|
332
|
-
target_file=$(create_new_journal_file "$target_num")
|
|
333
|
-
echo "Created: $target_file" >&2
|
|
334
|
-
fi
|
|
335
|
-
|
|
336
|
-
echo "$session_content" >> "$target_file"
|
|
337
|
-
echo "[OK] Appended session to $(basename "$target_file")" >&2
|
|
338
|
-
|
|
339
|
-
echo "" >&2
|
|
340
|
-
|
|
341
|
-
# Update index.md directly
|
|
342
|
-
local active_file="${FILE_JOURNAL_PREFIX}$target_num.md"
|
|
343
|
-
update_index "$title" "$commit" "$new_session" "$active_file"
|
|
344
|
-
|
|
345
|
-
echo "" >&2
|
|
346
|
-
echo "========================================" >&2
|
|
347
|
-
echo "[OK] Session $new_session added successfully!" >&2
|
|
348
|
-
echo "========================================" >&2
|
|
349
|
-
echo "" >&2
|
|
350
|
-
echo "Files updated:" >&2
|
|
351
|
-
echo " - $(basename "$target_file")" >&2
|
|
352
|
-
echo " - index.md" >&2
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
show_help() {
|
|
356
|
-
echo "Usage: $0 --title \"Title\" [options]"
|
|
357
|
-
echo ""
|
|
358
|
-
echo "Add a new session to journal file and update index.md automatically."
|
|
359
|
-
echo ""
|
|
360
|
-
echo "Options:"
|
|
361
|
-
echo " --title TEXT Session title (required)"
|
|
362
|
-
echo " --commit HASHES Comma-separated commit hashes (optional)"
|
|
363
|
-
echo " --summary TEXT Brief summary of the session (optional)"
|
|
364
|
-
echo " --content-file Path to file with detailed content (optional)"
|
|
365
|
-
echo ""
|
|
366
|
-
echo "You can also pipe content via stdin:"
|
|
367
|
-
echo " echo \"Details\" | $0 --title \"Title\" --commit \"abc123\""
|
|
368
|
-
echo ""
|
|
369
|
-
echo "Examples:"
|
|
370
|
-
echo " $0 --title \"Fix login bug\" --commit \"abc1234\" --summary \"Fixed auth issue\""
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
# =============================================================================
|
|
374
|
-
# Main Entry
|
|
375
|
-
# =============================================================================
|
|
376
|
-
|
|
377
|
-
case "${1:-}" in
|
|
378
|
-
--help|-h|help)
|
|
379
|
-
show_help
|
|
380
|
-
;;
|
|
381
|
-
*)
|
|
382
|
-
add_session "$@"
|
|
383
|
-
;;
|
|
384
|
-
esac
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Developer management utilities
|
|
3
|
-
#
|
|
4
|
-
# Usage: source this file in other scripts
|
|
5
|
-
# source "$(dirname "$0")/common/developer.sh"
|
|
6
|
-
#
|
|
7
|
-
# Provides:
|
|
8
|
-
# init_developer - Initialize developer
|
|
9
|
-
# ensure_developer - Ensure developer is initialized (exit if not)
|
|
10
|
-
# show_developer_info - Show developer information
|
|
11
|
-
|
|
12
|
-
# Ensure paths.sh is loaded
|
|
13
|
-
if ! type get_repo_root &>/dev/null; then
|
|
14
|
-
source "$(dirname "${BASH_SOURCE[0]}")/paths.sh"
|
|
15
|
-
fi
|
|
16
|
-
|
|
17
|
-
# =============================================================================
|
|
18
|
-
# Developer Initialization
|
|
19
|
-
# =============================================================================
|
|
20
|
-
|
|
21
|
-
init_developer() {
|
|
22
|
-
local name="$1"
|
|
23
|
-
local repo_root="${2:-$(get_repo_root)}"
|
|
24
|
-
|
|
25
|
-
if [[ -z "$name" ]]; then
|
|
26
|
-
echo "Error: developer name is required" >&2
|
|
27
|
-
return 1
|
|
28
|
-
fi
|
|
29
|
-
|
|
30
|
-
local dev_file="$repo_root/$DIR_WORKFLOW/$FILE_DEVELOPER"
|
|
31
|
-
local workspace_dir="$repo_root/$DIR_WORKFLOW/$DIR_WORKSPACE/$name"
|
|
32
|
-
|
|
33
|
-
# Create .developer file
|
|
34
|
-
cat > "$dev_file" << EOF
|
|
35
|
-
name=$name
|
|
36
|
-
initialized_at=$(date -Iseconds)
|
|
37
|
-
EOF
|
|
38
|
-
|
|
39
|
-
# Create workspace directory structure
|
|
40
|
-
mkdir -p "$workspace_dir"
|
|
41
|
-
|
|
42
|
-
# Create initial journal file
|
|
43
|
-
local journal_file="$workspace_dir/${FILE_JOURNAL_PREFIX}1.md"
|
|
44
|
-
if [[ ! -f "$journal_file" ]]; then
|
|
45
|
-
cat > "$journal_file" << JOURNAL_EOF
|
|
46
|
-
# Journal - $name (Part 1)
|
|
47
|
-
|
|
48
|
-
> AI development session journal
|
|
49
|
-
> Started: $(date +%Y-%m-%d)
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
JOURNAL_EOF
|
|
54
|
-
fi
|
|
55
|
-
|
|
56
|
-
# Create index.md with markers for auto-update
|
|
57
|
-
local index_file="$workspace_dir/index.md"
|
|
58
|
-
if [[ ! -f "$index_file" ]]; then
|
|
59
|
-
cat > "$index_file" << INDEX_EOF
|
|
60
|
-
# Workspace Index - $name
|
|
61
|
-
|
|
62
|
-
> Journal tracking for AI development sessions.
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Current Status
|
|
67
|
-
|
|
68
|
-
<!-- @@@auto:current-status -->
|
|
69
|
-
- **Active File**: \`journal-1.md\`
|
|
70
|
-
- **Total Sessions**: 0
|
|
71
|
-
- **Last Active**: -
|
|
72
|
-
<!-- @@@/auto:current-status -->
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## Active Documents
|
|
77
|
-
|
|
78
|
-
<!-- @@@auto:active-documents -->
|
|
79
|
-
| File | Lines | Status |
|
|
80
|
-
|------|-------|--------|
|
|
81
|
-
| \`journal-1.md\` | ~0 | Active |
|
|
82
|
-
<!-- @@@/auto:active-documents -->
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Session History
|
|
87
|
-
|
|
88
|
-
<!-- @@@auto:session-history -->
|
|
89
|
-
| # | Date | Title | Commits |
|
|
90
|
-
|---|------|-------|---------|
|
|
91
|
-
<!-- @@@/auto:session-history -->
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## Notes
|
|
96
|
-
|
|
97
|
-
- Sessions are appended to journal files
|
|
98
|
-
- New journal file created when current exceeds 2000 lines
|
|
99
|
-
- Use \`add-session.sh\` to record sessions
|
|
100
|
-
INDEX_EOF
|
|
101
|
-
fi
|
|
102
|
-
|
|
103
|
-
echo "Developer initialized: $name"
|
|
104
|
-
echo " .developer file: $dev_file"
|
|
105
|
-
echo " Workspace dir: $workspace_dir"
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
ensure_developer() {
|
|
109
|
-
local repo_root="${1:-$(get_repo_root)}"
|
|
110
|
-
|
|
111
|
-
if ! check_developer "$repo_root"; then
|
|
112
|
-
echo "Error: Developer not initialized." >&2
|
|
113
|
-
echo "Run: ./.trellis/scripts/init-developer.sh <your-name>" >&2
|
|
114
|
-
exit 1
|
|
115
|
-
fi
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
show_developer_info() {
|
|
119
|
-
local repo_root="${1:-$(get_repo_root)}"
|
|
120
|
-
local developer=$(get_developer "$repo_root")
|
|
121
|
-
|
|
122
|
-
if [[ -z "$developer" ]]; then
|
|
123
|
-
echo "Developer: (not initialized)"
|
|
124
|
-
else
|
|
125
|
-
echo "Developer: $developer"
|
|
126
|
-
echo "Workspace: $DIR_WORKFLOW/$DIR_WORKSPACE/$developer/"
|
|
127
|
-
echo "Tasks: $DIR_WORKFLOW/$DIR_TASKS/"
|
|
128
|
-
fi
|
|
129
|
-
}
|