@utilarium/dreadcabinet 0.0.16-dev.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.
- package/.nvmrc +2 -0
- package/LICENSE +190 -0
- package/README.md +95 -0
- package/dist/configure.d.ts +5 -0
- package/dist/configure.js +44 -0
- package/dist/configure.js.map +1 -0
- package/dist/constants.d.ts +36 -0
- package/dist/constants.js +53 -0
- package/dist/constants.js.map +1 -0
- package/dist/defaults.d.ts +2 -0
- package/dist/defaults.js +32 -0
- package/dist/defaults.js.map +1 -0
- package/dist/dreadcabinet.cjs +1793 -0
- package/dist/dreadcabinet.cjs.map +1 -0
- package/dist/dreadcabinet.d.ts +131 -0
- package/dist/dreadcabinet.js +111 -0
- package/dist/dreadcabinet.js.map +1 -0
- package/dist/error/ArgumentError.d.ts +5 -0
- package/dist/error/ArgumentError.js +26 -0
- package/dist/error/ArgumentError.js.map +1 -0
- package/dist/input/input.d.ts +7 -0
- package/dist/input/input.js +13 -0
- package/dist/input/input.js.map +1 -0
- package/dist/input/process.d.ts +5 -0
- package/dist/input/process.js +36 -0
- package/dist/input/process.js.map +1 -0
- package/dist/input/structured.d.ts +15 -0
- package/dist/input/structured.js +324 -0
- package/dist/input/structured.js.map +1 -0
- package/dist/input/unstructured.d.ts +2 -0
- package/dist/input/unstructured.js +45 -0
- package/dist/input/unstructured.js.map +1 -0
- package/dist/logger.d.ts +2 -0
- package/dist/logger.js +19 -0
- package/dist/logger.js.map +1 -0
- package/dist/operate.d.ts +2 -0
- package/dist/operate.js +27 -0
- package/dist/operate.js.map +1 -0
- package/dist/output.d.ts +7 -0
- package/dist/output.js +99 -0
- package/dist/output.js.map +1 -0
- package/dist/read.d.ts +4 -0
- package/dist/read.js +30 -0
- package/dist/read.js.map +1 -0
- package/dist/util/dates.d.ts +60 -0
- package/dist/util/dates.js +699 -0
- package/dist/util/dates.js.map +1 -0
- package/dist/util/storage.d.ts +33 -0
- package/dist/util/storage.js +140 -0
- package/dist/util/storage.js.map +1 -0
- package/dist/validate.d.ts +4 -0
- package/dist/validate.js +134 -0
- package/dist/validate.js.map +1 -0
- package/guide/architecture.md +60 -0
- package/guide/configuration.md +132 -0
- package/guide/development.md +110 -0
- package/guide/index.md +62 -0
- package/guide/usage.md +166 -0
- package/output/kodrdriv/250703-0645-commit-message.md +21 -0
- package/output/kodrdriv/250703-0653-commit-message.md +1 -0
- package/output/kodrdriv/250703-0654-commit-message.md +1 -0
- package/output/kodrdriv/250703-0655-release-notes.md +51 -0
- package/output/kodrdriv/250703-0700-commit-message.md +1 -0
- package/output/kodrdriv/250703-0700-release-notes.md +8 -0
- package/output/kodrdriv/250703-0706-commit-message.md +1 -0
- package/output/kodrdriv/250703-0706-release-notes.md +11 -0
- package/output/kodrdriv/250703-0717-commit-message.md +1 -0
- package/output/kodrdriv/250703-0719-commit-message.md +1 -0
- package/output/kodrdriv/250703-0719-release-notes.md +17 -0
- package/output/kodrdriv/250703-0730-commit-message.md +1 -0
- package/output/kodrdriv/250703-0730-release-notes.md +11 -0
- package/output/kodrdriv/250703-1510-commit-message.md +1 -0
- package/output/kodrdriv/250710-0805-commit-message.md +3 -0
- package/output/kodrdriv/250710-0815-commit-message.md +1 -0
- package/output/kodrdriv/250710-0815-release-notes.md +39 -0
- package/output/kodrdriv/260107-2021-commit-message.md +37 -0
- package/output/kodrdriv/260108-0432-commit-message.md +6 -0
- package/output/kodrdriv/260108-0435-commit-message.md +3 -0
- package/output/kodrdriv/260108-0436-commit-message.md +4 -0
- package/output/kodrdriv/260108-0439-release-notes.md +63 -0
- package/output/kodrdriv/260108-0543-commit-message.md +19 -0
- package/output/kodrdriv/260108-0550-commit-message.md +3 -0
- package/output/kodrdriv/260108-0550-release-notes.md +19 -0
- package/output/kodrdriv/260108-0600-commit-message.md +3 -0
- package/output/kodrdriv/260110-0717-commit-message.md +4 -0
- package/output/kodrdriv/260110-1152-commit-message.md +1 -0
- package/output/kodrdriv/260110-1850-commit-message.md +1 -0
- package/output/kodrdriv/260110-1852-release-notes.md +33 -0
- package/output/kodrdriv/260112-2257-commit-message.md +5 -0
- package/output/kodrdriv/260112-2317-commit-message.md +1 -0
- package/output/kodrdriv/260112-2318-release-notes.md +42 -0
- package/output/kodrdriv/260113-0053-commit-message.md +1 -0
- package/output/kodrdriv/260113-0054-commit-message.md +1 -0
- package/output/kodrdriv/260113-0054-release-notes.md +49 -0
- package/output/kodrdriv/260130-1132-commit-message.md +1 -0
- package/output/kodrdriv/260130-1135-commit-message.md +1 -0
- package/output/kodrdriv/260130-1335-commit-message.md +10 -0
- package/output/kodrdriv/RELEASE_NOTES.md +47 -0
- package/output/kodrdriv/RELEASE_TITLE.md +1 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-08T04-21-54-623Z.md +372 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-08T12-32-36-513Z.md +55 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-08T12-35-58-580Z.md +105 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-08T12-36-05-658Z.md +53 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-08T13-43-55-498Z.md +178 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-08T13-50-10-230Z.md +53 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-08T13-50-35-136Z.md +52 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-08T14-00-30-772Z.md +52 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-10T15-17-43-324Z.md +53 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-10T19-52-47-424Z.md +97 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-11T02-50-23-123Z.md +138 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-11T02-50-45-038Z.md +114 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-11T02-50-49-467Z.md +114 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-13T06-57-00-384Z.md +169 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-13T07-17-29-292Z.md +114 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-13T07-17-47-579Z.md +114 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-13T08-48-55-599Z.md +144 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-13T08-53-53-725Z.md +114 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-13T08-54-11-600Z.md +97 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-30T19-32-17-053Z.md +174 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-30T19-35-00-887Z.md +152 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-30T21-02-16-553Z.md +236 -0
- package/output/kodrdriv/agentic-reflection-commit-2026-01-30T21-17-22-227Z.md +347 -0
- package/output/kodrdriv/agentic-reflection-release-2026-01-08T12-39-08-279Z.md +507 -0
- package/output/kodrdriv/agentic-reflection-release-2026-01-08T13-50-57-683Z.md +183 -0
- package/output/kodrdriv/agentic-reflection-release-2026-01-11T02-52-39-082Z.md +347 -0
- package/output/kodrdriv/agentic-reflection-release-2026-01-13T07-18-21-218Z.md +315 -0
- package/output/kodrdriv/agentic-reflection-release-2026-01-13T08-54-59-340Z.md +354 -0
- package/package.json +80 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# Agentic Workflow - Self-Reflection Report
|
|
2
|
+
|
|
3
|
+
Generated: 2026-01-30T21:02:16.553Z
|
|
4
|
+
|
|
5
|
+
## Execution Summary
|
|
6
|
+
|
|
7
|
+
- **Iterations**: 3
|
|
8
|
+
- **Tool Calls**: 9
|
|
9
|
+
- **Unique Tools**: 5
|
|
10
|
+
|
|
11
|
+
## Tool Effectiveness Analysis
|
|
12
|
+
|
|
13
|
+
| Tool | Calls | Success | Failures | Success Rate | Avg Duration |
|
|
14
|
+
|------|-------|---------|----------|--------------|--------------|
|
|
15
|
+
| get_file_content | 3 | 3 | 0 | 100.0% | 1ms |
|
|
16
|
+
| get_file_history | 3 | 3 | 0 | 100.0% | 10ms |
|
|
17
|
+
| get_file_modification_times | 1 | 1 | 0 | 100.0% | 0ms |
|
|
18
|
+
| group_files_by_concern | 1 | 1 | 0 | 100.0% | 0ms |
|
|
19
|
+
| get_recent_commits | 1 | 1 | 0 | 100.0% | 14ms |
|
|
20
|
+
|
|
21
|
+
### Tool Performance Insights
|
|
22
|
+
|
|
23
|
+
**Most Frequently Used:**
|
|
24
|
+
- get_file_content: 3 calls
|
|
25
|
+
- get_file_modification_times: 1 calls
|
|
26
|
+
- group_files_by_concern: 1 calls
|
|
27
|
+
|
|
28
|
+
## Recommendations for Improvement
|
|
29
|
+
|
|
30
|
+
*No specific recommendations at this time. Execution appears optimal.*
|
|
31
|
+
|
|
32
|
+
## Detailed Execution Timeline
|
|
33
|
+
|
|
34
|
+
| Time | Iteration | Tool | Result | Duration |
|
|
35
|
+
|------|-----------|------|--------|----------|
|
|
36
|
+
| 1:01:58 PM | 1 | get_file_content | ✅ Success | 1ms |
|
|
37
|
+
| 1:01:58 PM | 1 | get_file_content | ✅ Success | 0ms |
|
|
38
|
+
| 1:01:58 PM | 1 | get_file_content | ✅ Success | 1ms |
|
|
39
|
+
| 1:01:58 PM | 1 | get_file_modification_times | ✅ Success | 0ms |
|
|
40
|
+
| 1:01:58 PM | 1 | group_files_by_concern | ✅ Success | 0ms |
|
|
41
|
+
| 1:01:58 PM | 1 | get_recent_commits | ✅ Success | 14ms |
|
|
42
|
+
| 1:02:02 PM | 2 | get_file_history | ✅ Success | 10ms |
|
|
43
|
+
| 1:02:02 PM | 2 | get_file_history | ✅ Success | 13ms |
|
|
44
|
+
| 1:02:02 PM | 2 | get_file_history | ✅ Success | 7ms |
|
|
45
|
+
|
|
46
|
+
## Conversation History
|
|
47
|
+
|
|
48
|
+
<details>
|
|
49
|
+
<summary>Click to expand full agentic interaction</summary>
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
[
|
|
53
|
+
{
|
|
54
|
+
"role": "system",
|
|
55
|
+
"content": "You are a professional software engineer writing commit messages for your team.\n\n## Available Tools\n\nYou have access to tools to investigate the changes:\n- `get_file_content` - Read file contents or diffs for specific files\n- `get_file_modification_times` - See when files were modified relative to each other\n- `group_files_by_concern` - Understand how files relate by type/purpose\n- `get_recent_commits` - Get recent commit history to avoid duplicates\n- `get_file_history` - Understand how code evolved\n- `get_file_dependencies` - Assess impact of changes\n- `get_related_tests` - Find related test files\n- `search_codebase` - Search for usage patterns\n\nUse these tools to investigate the changes rather than asking for information upfront.\n\n## Your Task\n\nAnalyze the staged changes and determine the best way to commit them. Your primary goal is to create **meaningful, atomic commits** that each represent a single logical change.\n\n**CRITICAL**: When there are many changed files, especially after a long work session (multiple hours), you should almost always split them into multiple commits. A single commit with 10+ files usually indicates multiple distinct changes that should be separated.\n\nThink about:\n- What distinct features, fixes, or improvements are represented?\n- Are there natural groupings by functionality, module, or purpose?\n- When were files modified relative to each other?\n- What should reviewers focus on in each commit?\n\n## Investigation Strategy\n\nFor any non-trivial set of changes, gather multiple signals to understand how to group commits:\n\n1. **Check file modification times** using `get_file_modification_times`\n - This reveals *when* files were changed relative to each other\n - Files modified close together *may* be part of the same logical change\n - Large temporal gaps *can* indicate separate work sessions\n - Note: temporal proximity is one signal, not a guarantee of relatedness\n\n2. **Understand logical relationships** using `group_files_by_concern`\n - Groups by module, type (tests, docs, source), and directory structure\n - Reveals which files are functionally related regardless of when they were modified\n\n3. **Cross-reference both signals** to make informed decisions:\n - Files modified together AND logically related → strong candidate for same commit\n - Files modified apart BUT logically related → might still belong together\n - Files modified together BUT logically unrelated → consider splitting\n - Use your judgment - neither signal is definitive on its own\n\n4. **Investigate further** as needed:\n - get_file_content - see full context when diffs are unclear\n - get_file_history - understand how code evolved\n - get_file_dependencies - assess impact of changes\n - get_recent_commits - avoid duplicate messages\n - get_related_tests - understand behavior changes\n - search_codebase - find usage patterns\n\n## When to Split Commits\n\n**Prefer multiple commits when:**\n- Changes span multiple hours of work (check modification times!)\n- Different logical features or fixes are included\n- Test changes could be separated from production code changes\n- Documentation updates are unrelated to code changes\n- Refactoring is mixed with feature work\n- Configuration changes are mixed with implementation changes\n- Files in different modules/packages are changed for different reasons\n\n**Keep as one commit when:**\n- All changes are part of a single, cohesive feature\n- Files were modified together in a focused work session\n- Test changes directly test the production code changes\n- The changes tell a single coherent story\n\n**Default bias**: When in doubt about whether to split, **prefer splitting**. It's better to have too many focused commits than too few bloated ones. A good commit should be understandable and reviewable in isolation.\n\n## Important Context Guidelines\n\nIf additional context is provided (from context files or other sources), use your judgment:\n- If the context is relevant to these specific changes, incorporate it\n- If the context describes unrelated changes or other packages, ignore it\n- Don't force connections between unrelated information\n- Focus on accurately describing what actually changed\n\n## Writing Style\n\nWrite naturally and directly:\n- Use plain language, not corporate speak\n- Be specific and concrete\n- Avoid buzzwords and jargon\n- No emojis or excessive punctuation\n- No phrases like \"this commit\" or \"this PR\"\n- No meta-commentary about the commit itself\n\nFollow conventional commit format when appropriate (feat:, fix:, refactor:, docs:, test:, chore:), but prioritize clarity over formality.\n\n## Output Format\n\nWhen ready, format your response as:\n\nCOMMIT_MESSAGE:\n[Your commit message here - only for the FIRST group of changes if splitting]\n\nIf changes should be split into multiple commits (which is often the case with large changesets):\n\nSUGGESTED_SPLITS:\nSplit 1:\nFiles: [list of files]\nRationale: [why these belong together - mention temporal clustering and/or logical relationship]\nMessage: [commit message for this split]\n\nSplit 2:\nFiles: [list of files]\nRationale: [why these belong together]\nMessage: [commit message for this split]\n\nSplit 3:\n...\n\nOutput only the commit message and splits. No conversational remarks or follow-up offers."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"role": "user",
|
|
59
|
+
"content": "I have staged changes that need a commit message.\n\nChanged files (3):\n - .github/workflows/test.yml\n - docs/src/App.tsx\n - package.json\n\nUser direction: --model\n\n## Your Analysis Task\n\nUse your tools to investigate the changes:\n1. Use `get_file_content` to read the actual changes in the files\n2. Use `get_file_modification_times` to see when files were modified relative to each other\n3. Use `group_files_by_concern` to understand how files relate by type/purpose\n4. Use `get_recent_commits` to check recent commit history and avoid duplicates\n5. Cross-reference temporal proximity and logical relatedness to determine the best commit structure\n\nConsider:\n- What distinct features, fixes, or improvements are included?\n- Are files that were modified together also logically related?\n- Would separate commits make the history more understandable?\n\nIf changes represent multiple logical concerns, suggest splits.\n\nStart by reading the file contents to understand what actually changed."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"role": "assistant",
|
|
63
|
+
"content": null,
|
|
64
|
+
"tool_calls": [
|
|
65
|
+
{
|
|
66
|
+
"id": "call_c23ztogWj1IW9J6yy7kOYbmX",
|
|
67
|
+
"type": "function",
|
|
68
|
+
"function": {
|
|
69
|
+
"name": "get_file_content",
|
|
70
|
+
"arguments": "{\"filePath\": \".github/workflows/test.yml\", \"includeLineNumbers\": false}"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "call_eQm7hSvUnqeNylaZa0Gv5eV5",
|
|
75
|
+
"type": "function",
|
|
76
|
+
"function": {
|
|
77
|
+
"name": "get_file_content",
|
|
78
|
+
"arguments": "{\"filePath\": \"docs/src/App.tsx\", \"includeLineNumbers\": false}"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "call_ZgUaUbUWq1vYjayWo7sq4PzP",
|
|
83
|
+
"type": "function",
|
|
84
|
+
"function": {
|
|
85
|
+
"name": "get_file_content",
|
|
86
|
+
"arguments": "{\"filePath\": \"package.json\", \"includeLineNumbers\": false}"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "call_KA9s3rGL4dlGhDEl4qDrTwVF",
|
|
91
|
+
"type": "function",
|
|
92
|
+
"function": {
|
|
93
|
+
"name": "get_file_modification_times",
|
|
94
|
+
"arguments": "{\"filePaths\": [\".github/workflows/test.yml\", \"docs/src/App.tsx\", \"package.json\"]}"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"id": "call_4WtvtiOoxHEd9En81r65el6s",
|
|
99
|
+
"type": "function",
|
|
100
|
+
"function": {
|
|
101
|
+
"name": "group_files_by_concern",
|
|
102
|
+
"arguments": "{\"filePaths\": [\".github/workflows/test.yml\", \"docs/src/App.tsx\", \"package.json\"]}"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": "call_d5YFxIU1ARgposbd3stMRUbL",
|
|
107
|
+
"type": "function",
|
|
108
|
+
"function": {
|
|
109
|
+
"name": "get_recent_commits",
|
|
110
|
+
"arguments": "{\"filePaths\": [\".github/workflows/test.yml\", \"docs/src/App.tsx\", \"package.json\"], \"since\": \"1 week ago\", \"limit\": 5}"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"role": "tool",
|
|
117
|
+
"tool_call_id": "call_c23ztogWj1IW9J6yy7kOYbmX",
|
|
118
|
+
"content": "name: Run Tests\n\non:\n pull_request:\n branches:\n - main\n - working\n\npermissions:\n contents: read\n id-token: write\n\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n - uses: actions/setup-node@v4\n with:\n node-version: 24\n - run: npm install\n - run: npm run lint\n - run: npm run build\n - run: npm run test\n",
|
|
119
|
+
"name": "get_file_content"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"role": "tool",
|
|
123
|
+
"tool_call_id": "call_eQm7hSvUnqeNylaZa0Gv5eV5",
|
|
124
|
+
"content": "import { useState, useEffect } from 'react'\nimport LoadingSpinner from './components/LoadingSpinner'\nimport ErrorMessage from './components/ErrorMessage'\nimport MarkdownRenderer from './components/MarkdownRenderer'\nimport './App.css'\n\ninterface DocSection {\n id: string;\n title: string;\n file: string;\n description: string;\n}\n\nconst DOC_SECTIONS: DocSection[] = [\n {\n id: 'getting-started',\n title: 'Getting Started',\n file: 'getting-started.md',\n description: 'Quick start guide and integration examples'\n },\n {\n id: 'cli-options',\n title: 'CLI Options Reference',\n file: 'cli-options.md',\n description: 'Complete reference for all command-line options'\n },\n {\n id: 'configuration-files',\n title: 'Configuration Files',\n file: 'configuration-files.md',\n description: 'Using YAML/JSON files with Cardigantime integration'\n },\n {\n id: 'advanced-usage',\n title: 'Advanced Usage',\n file: 'advanced-usage.md',\n description: 'Features configuration and advanced patterns'\n },\n {\n id: 'api-reference',\n title: 'API Reference',\n file: 'api-reference.md',\n description: 'Complete programmatic API documentation'\n },\n {\n id: 'faq',\n title: 'FAQ',\n file: 'faq.md',\n description: 'Frequently asked questions and troubleshooting'\n },\n {\n id: 'contributing',\n title: 'Contributing',\n file: 'contributing.md',\n description: 'How to contribute to DreadCabinet development'\n }\n];\n\nfunction App() {\n const [activeSection, setActiveSection] = useState<string>('getting-started')\n const [content, setContent] = useState<string>('')\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<string | null>(null)\n const [sidebarOpen, setSidebarOpen] = useState(false)\n\n const getLogoPath = (sectionId: string): string => {\n switch (sectionId) {\n default:\n return '/dreadcabinet/dread-cabinet.png'\n }\n }\n\n const loadSection = async (sectionId: string) => {\n const section = DOC_SECTIONS.find(s => s.id === sectionId)\n if (!section) return\n\n setLoading(true)\n setError(null)\n\n try {\n const response = await fetch(`./${section.file}`)\n if (!response.ok) {\n throw new Error(`Failed to fetch ${section.title}: ${response.status}`)\n }\n const text = await response.text()\n setContent(text)\n setActiveSection(sectionId)\n setLoading(false)\n setSidebarOpen(false) // Close sidebar on mobile after selection\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Unknown error')\n setLoading(false)\n }\n }\n\n useEffect(() => {\n // Load initial section\n loadSection('getting-started')\n }, [])\n\n if (loading) {\n return (\n <div className=\"app\">\n <div className=\"loading-container\">\n <LoadingSpinner />\n </div>\n </div>\n )\n }\n\n if (error) {\n return (\n <div className=\"app\">\n <div className=\"error-container\">\n <ErrorMessage message={error} />\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"app\">\n <header className=\"header\">\n <div className=\"header-content\">\n <div className=\"header-main\">\n <div className=\"header-left\">\n <h1>DreadCabinet</h1>\n <button\n className=\"mobile-menu-button\"\n onClick={() => setSidebarOpen(!sidebarOpen)}\n aria-label=\"Toggle menu\"\n >\n ☰\n </button>\n </div>\n <img src={getLogoPath(activeSection)} alt=\"DreadCabinet logo\" className=\"logo\" />\n </div>\n <p className=\"subtitle\">Organize Your Digital Chaos</p>\n <div className=\"header-links\">\n <a href=\"https://utilarium.github.io\" target=\"_blank\" rel=\"noopener noreferrer\">\n Utilarium\n </a>\n <a href=\"https://github.com/utilarium/dreadcabinet\" target=\"_blank\" rel=\"noopener noreferrer\">\n GitHub\n </a>\n <a href=\"https://www.npmjs.com/package/@theunwalked/dreadcabinet\" target=\"_blank\" rel=\"noopener noreferrer\">\n NPM\n </a>\n </div>\n </div>\n </header>\n\n <div className=\"main-content\">\n <nav className={`sidebar ${sidebarOpen ? 'sidebar-open' : ''}`}>\n <div className=\"sidebar-content\">\n <h2>Documentation</h2>\n <ul className=\"nav-list\">\n {DOC_SECTIONS.map((section) => (\n <li key={section.id}>\n <button\n className={`nav-item ${activeSection === section.id ? 'active' : ''}`}\n onClick={() => loadSection(section.id)}\n >\n <span className=\"nav-title\">{section.title}</span>\n <span className=\"nav-description\">{section.description}</span>\n </button>\n </li>\n ))}\n </ul>\n </div>\n </nav>\n\n <main className=\"content\">\n <div className=\"markdown-container\">\n <MarkdownRenderer content={content} />\n </div>\n </main>\n </div>\n\n <footer className=\"footer\">\n <div className=\"footer-content\">\n <p>\n Built with ❤️ by{' '}\n <a href=\"https://github.com/tobrien\" target=\"_blank\" rel=\"noopener noreferrer\">\n Tim O'Brien\n </a>\n </p>\n <p className=\"license\">Licensed under Apache-2.0</p>\n </div>\n </footer>\n </div>\n )\n}\n\nexport default App ",
|
|
125
|
+
"name": "get_file_content"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"role": "tool",
|
|
129
|
+
"tool_call_id": "call_ZgUaUbUWq1vYjayWo7sq4PzP",
|
|
130
|
+
"content": "{\n \"name\": \"@theunwalked/dreadcabinet\",\n \"version\": \"0.0.16-dev.0\",\n \"description\": \"dreadcabinet organizes the chaos.\",\n \"main\": \"dist/dreadcabinet.cjs\",\n \"module\": \"dist/dreadcabinet.js\",\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/utilarium/dreadcabinet.git\"\n },\n \"homepage\": \"https://utilarium.github.io/dreadcabinet/\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/dreadcabinet.d.ts\",\n \"import\": \"./dist/dreadcabinet.js\",\n \"require\": \"./dist/dreadcabinet.cjs\"\n }\n },\n \"scripts\": {\n \"build\": \"npm run lint && tsc --noEmit && vite build\",\n \"start\": \"dist/main.js\",\n \"dev\": \"vite build --watch\",\n \"watch\": \"npm run dev\",\n \"test\": \"npm run test:coverage && npm run test:readme\",\n \"test:coverage\": \"vitest run --coverage\",\n \"test:readme\": \"doccident -c .markdown-doctest-setup.mjs README.md\",\n \"lint\": \"eslint . --ext .ts\",\n \"lint:fix\": \"eslint . --ext .ts --fix\",\n \"precommit\": \"npm run build && npm run test\",\n \"clean\": \"rm -rf dist\",\n \"prepublishOnly\": \"npm run clean && npm run build\",\n \"docs:dev\": \"cd docs && cp ../README.md public/ && npm install && npm run dev\",\n \"docs:build\": \"cd docs && cp ../README.md public/ && npm install && npm run build\",\n \"docs:preview\": \"cd docs && npm run preview\",\n \"docs:test\": \"cd docs && npm install && npm run test\",\n \"docs:coverage\": \"cd docs && npm install && npm run coverage\"\n },\n \"keywords\": [\n \"focus\",\n \"productivity\",\n \"notes\",\n \"genai\"\n ],\n \"author\": \"Tim O'Brien <tobrien@discursive.com>\",\n \"license\": \"Apache-2.0\",\n \"engines\": {\n \"node\": \">=24.0.0\"\n },\n \"dependencies\": {\n \"commander\": \"^14.0.0\",\n \"dayjs\": \"^1.11.13\",\n \"glob\": \"^13.0.0\",\n \"zod\": \"^4.3.6\"\n },\n \"devDependencies\": {\n \"@doccident/doccident\": \"^0.0.15\",\n \"@eslint/eslintrc\": \"^3.3.1\",\n \"@eslint/js\": \"^9.30.1\",\n \"@rollup/plugin-replace\": \"^6.0.2\",\n \"@swc/core\": \"^1.15.11\",\n \"@theunwalked/cardigantime\": \"^0.0.23\",\n \"@types/node\": \"^25.1.0\",\n \"@typescript-eslint/eslint-plugin\": \"^8.54.0\",\n \"@typescript-eslint/parser\": \"^8.54.0\",\n \"@vitest/coverage-v8\": \"^4.0.18\",\n \"eslint\": \"^9.30.1\",\n \"eslint-plugin-import\": \"^2.32.0\",\n \"globals\": \"^17.2.0\",\n \"mockdate\": \"^3.0.5\",\n \"typescript\": \"^5.8.3\",\n \"vite\": \"^7.0.4\",\n \"vite-plugin-dts\": \"^4.5.4\",\n \"vite-plugin-node\": \"^7.0.0\",\n \"vitest\": \"^4.0.18\"\n },\n \"overrides\": {\n \"wrap-ansi\": \"7.0.0\"\n }\n}\n",
|
|
131
|
+
"name": "get_file_content"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"role": "tool",
|
|
135
|
+
"tool_call_id": "call_KA9s3rGL4dlGhDEl4qDrTwVF",
|
|
136
|
+
"content": "## File Modification Times (sorted oldest to newest)\n\n2026-01-30 20:01:52 package.json\n2026-01-30 20:11:23 docs/src/App.tsx\n2026-01-30 21:00:45 .github/workflows/test.yml\n\n\n## Temporal Clusters (files modified within 10 minutes of each other)\n\nFound 2 distinct work sessions:\n\n### Session 1 (2 files, 10 min span)\nTime: 2026-01-30 20:01:52 to 2026-01-30 20:11:23\nFiles:\n - package.json\n - docs/src/App.tsx\n\n### Session 2 (1 files, 0 min span)\nTime: 2026-01-30 21:00:45 to 2026-01-30 21:00:45\nFiles:\n - .github/workflows/test.yml\n\n\n**Note**: These 2 temporal clusters may indicate separate work sessions. Cross-reference with logical groupings to determine if they represent distinct changes worth splitting.",
|
|
137
|
+
"name": "get_file_modification_times"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"role": "tool",
|
|
141
|
+
"tool_call_id": "call_4WtvtiOoxHEd9En81r65el6s",
|
|
142
|
+
"content": "other (1 files):\n - .github/workflows/test.yml\n\nsource:docs/src (1 files):\n - docs/src/App.tsx\n\ndependencies (1 files):\n - package.json\n\nSuggestion: These 3 groups might be better as separate commits if they represent different concerns.",
|
|
143
|
+
"name": "group_files_by_concern"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"role": "tool",
|
|
147
|
+
"tool_call_id": "call_d5YFxIU1ARgposbd3stMRUbL",
|
|
148
|
+
"content": "d344584 - chore: bump version to 0.0.16-dev.0 (Tim O'Brien, 87 minutes ago)\n64375b1 - chore(deps): pin wrap-ansi to 7.0.0 via package.json overrides (Tim O'Brien, 2 hours ago)\n",
|
|
149
|
+
"name": "get_recent_commits"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"role": "assistant",
|
|
153
|
+
"content": null,
|
|
154
|
+
"tool_calls": [
|
|
155
|
+
{
|
|
156
|
+
"id": "call_n9w4O4BbG4LFBDDDoLcsRcfA",
|
|
157
|
+
"type": "function",
|
|
158
|
+
"function": {
|
|
159
|
+
"name": "get_file_history",
|
|
160
|
+
"arguments": "{\"filePaths\": [\"package.json\"], \"limit\": 5, \"format\": \"detailed\"}"
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id": "call_ttSl9Up2x3WnO3F12wfENMW8",
|
|
165
|
+
"type": "function",
|
|
166
|
+
"function": {
|
|
167
|
+
"name": "get_file_history",
|
|
168
|
+
"arguments": "{\"filePaths\": [\".github/workflows/test.yml\"], \"limit\": 5, \"format\": \"detailed\"}"
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"id": "call_sheTAHSoLQ52bJLmxf9IDhSB",
|
|
173
|
+
"type": "function",
|
|
174
|
+
"function": {
|
|
175
|
+
"name": "get_file_history",
|
|
176
|
+
"arguments": "{\"filePaths\": [\"docs/src/App.tsx\"], \"limit\": 5, \"format\": \"summary\"}"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"role": "tool",
|
|
183
|
+
"tool_call_id": "call_n9w4O4BbG4LFBDDDoLcsRcfA",
|
|
184
|
+
"content": "d34458459c96056738d925233f68334769714e9d\nTim O'Brien (tobrien@discursive.com)\nFri Jan 30 11:35:00 2026 -0800\nchore: bump version to 0.0.16-dev.0\n\n\n---\n64375b16362d309e298595a0e425bf995962d7ca\nTim O'Brien (tobrien@discursive.com)\nFri Jan 30 11:32:17 2026 -0800\nchore(deps): pin wrap-ansi to 7.0.0 via package.json overrides\n\n\n---\n4ddf803595476cc67fed9c0b78b2ea6a4582ac1b\nTim O'Brien (tobrien@discursive.com)\nTue Jan 13 00:58:23 2026 -0800\nchore: bump to 0.0.15-dev.0\n\n\n---\n93e78797b3b6810cad640f924136764ccc2358dc\nTim O'Brien (tobrien@discursive.com)\nTue Jan 13 00:57:11 2026 -0800\nchore(release): 0.0.15 (#88)\n\n* chore: bump to v0.0.15-dev.0\n\n* chore(node): use node: built-ins and align TS/Vite for ESNext\n\n* test(readme): switch markdown doctest transform from Babel to SWC\n\n* chore(deps): bump @theunwalked/cardigantime to ^0.0.22\n\n* chore(release): 0.0.15\n---\n832a08bf45e405b52278ef706cc27ffed3ceab71\nTim O'Brien (tobrien@discursive.com)\nMon Jan 12 23:19:42 2026 -0800\nchore(release): 0.0.14 (#87)\n\n* 0.0.14-dev.0\n\n* chore(node): require Node 24; update CI and ignores for lockfile-free installs\n\n- Add `.nvmrc` and set `engines.node` to `>=24.0.0`\n- Bump GitHub Actions workflows to Node 24 and switch `npm ci` -> `npm install`\n- Ignore `package-lock.json` (root and docs) and update lockfile as needed\n\n* chore(deps): bump @theunwalked/cardigantime to ^0.0.21\n\n* chore(release): 0.0.14\n---\n",
|
|
185
|
+
"name": "get_file_history"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"role": "tool",
|
|
189
|
+
"tool_call_id": "call_ttSl9Up2x3WnO3F12wfENMW8",
|
|
190
|
+
"content": "832a08bf45e405b52278ef706cc27ffed3ceab71\nTim O'Brien (tobrien@discursive.com)\nMon Jan 12 23:19:42 2026 -0800\nchore(release): 0.0.14 (#87)\n\n* 0.0.14-dev.0\n\n* chore(node): require Node 24; update CI and ignores for lockfile-free installs\n\n- Add `.nvmrc` and set `engines.node` to `>=24.0.0`\n- Bump GitHub Actions workflows to Node 24 and switch `npm ci` -> `npm install`\n- Ignore `package-lock.json` (root and docs) and update lockfile as needed\n\n* chore(deps): bump @theunwalked/cardigantime to ^0.0.21\n\n* chore(release): 0.0.14\n---\na33bcd2eb9d86de97a1d7c6ae6cefc3b866ad251\nTim O'Brien (tobrien@discursive.com)\nSat Jan 10 18:53:50 2026 -0800\nchore(release): 0.0.13 (#86)\n\n* 0.0.13-dev.0\n\n* chore: drop Codecov upload from CI and remove self-referential dependency\n\n- Remove the Codecov action step from the test workflow (no more CODECOV_TOKEN/coverage uploads)\n- Remove `@theunwalked/dreadcabinet` from runtime deps to avoid depending on the package itself\n\n* chore(deps): remove @theunwalked/dreadcabinet from package-lock.json\n\n* chore(deps): bump @theunwalked/cardigantime to ^0.0.20\n\n* chore(npm): set save=false in .npmrc\n\n* chore(deps): update package-lock for @theunwalked/cardigantime@0.0.20\n\n* chore(release): 0.0.13\n---\n007868118793af526246cce702ff05d28e43d0bf\nTim O'Brien (tobrien@discursive.com)\nThu Jan 8 05:46:07 2026 -0800\nchore(release): bump package version to 0.0.11\n\n- Update `package.json` version from 0.0.10 to 0.0.11\n- Reformat `package.json` (2-space indentation) with no functional/config changes beyond the version bump (#81)\n\n* SUGGESTED_SPLITS:\nSplit 1:\nFiles: [.github/workflows/dependency-review.yml, .github/workflows/test.yml, .github/workflows/npm-publish.yml, .github/workflows/pnpm-publish.yml]\nRationale: CI/CD behavior changes (new security check, test trigger changes, and switching the release publish workflow to npm) are reviewable together and independent of docs/metadata updates.\nMessage: |\n ci: add dependency review and publish releases via npm\n\n - Add dependency-review workflow with PR summary comments\n - Run test workflow on pull requests to main/working (instead of push)\n - Replace pnpm-based publish workflow with npm publish using npm ci and NPM_TOKEN\n\nSplit 2:\nFiles: [package.json, pnpm-lock.yaml, docs/pnpm-lock.yaml, pnpm-workspace.yaml]\nRationale: Package manager/config changes (scripts/overrides/workspace + lockfile updates) should be reviewed as a cohesive “tooling” change.\nMessage: |\n chore: prefer npm scripts and drop pnpm workspace config\n\n - Switch build/test/watch/prepublish scripts from pnpm to npm\n - Move wrap-ansi override to top-level overrides\n - Remove pnpm-workspace.yaml\n - Update pnpm lockfiles to match dependency resolution\n\nSplit 3:\nFiles: [LICENSE, README.md, docs/public/contributing.md, docs/public/faq.md, docs/src/App.tsx]\nRationale: Ownership/branding and documentation link updates are user-facing but don’t affect runtime/CI behavior; easier to review separately.\nMessage: |\n docs: update repo links and attribution to tobrien\n\n - Update GitHub URLs across docs/site from SemicolonAmbulance to tobrien\n - Update contributing guide to use npm commands\n - Update LICENSE/README and docs footer attribution\n\nSplit 4:\nFiles: [.DS_Store, src/.DS_Store, tests/.DS_Store]\nRationale: Accidental OS-generated binaries shouldn’t ship; keep noise out of functional commits.\nMessage: |\n chore: remove accidentally committed .DS_Store files\n\n* chore: standardize on npm in CI and refresh docs/metadata for utilarium\n\n- Switch GitHub Actions (tests + docs deploy) from pnpm to `npm ci`/`npm run` to match the npm lockfile workflow\n- Update package metadata (repository/homepage) and documentation links to the `utilarium/dreadcabinet` URLs\n- Add `precommit` script and reorder `test` to run coverage before README doctests; bump `@doccident/doccident` and update lockfile\n- Add `guide/` docs (architecture/configuration/usage/development) to document internal structure and common integration patterns\n\n* chore: refresh package-lock.json after npm install\n\nRegenerates the npm lockfile to reflect the current dependency resolution (updated versions/integrity metadata), keeping `npm ci` installs reproducible in CI and for contributors.\n\n* chore(release): bump package version to 0.0.11\n\n- Update `package.json` version from 0.0.10 to 0.0.11\n- Reformat `package.json` (2-space indentation) with no functional/config changes beyond the version bump\n\n* SUGGESTED_SPLITS:\nSplit 1:\nFiles: [README.md]\nRationale: Pure documentation formatting change; easier to review separately from dependency/lockfile updates.\nMessage: |\n docs(readme): use `console` fences for shell examples\n\n Mark the yarn install and CLI invocation snippets as `console` blocks to better reflect terminal output/commands.\n\nSplit 2:\nFiles: [package.json, package-lock.json]\nRationale: Functional dependency change + corresponding lockfile update should be reviewed together.\nMessage: |\n chore(deps): add @theunwalked/dreadcabinet dependency and update lockfile\n\n - Add `@theunwalked/dreadcabinet@^0.0.10` to runtime dependencies\n - Refresh `package-lock.json` to capture the new dependency resolution\n\n Note: this is a self-referential dependency given the package name; confirm it’s intentional.\n---\n751b9930c4b0ff93a41f575051b8212922cf80a2\nSemicolon Ambulance (SemicolonAmbulance@proton.me)\nFri May 23 16:09:56 2025 -0700\n\"Added initial configuration and setup files for DreadCabinet, introducing ESLint, CodeQL, Dependabot, and other GitHub Actions workflows.\n\n- Introduced .eslintrc.json for TypeScript linting.\n- Configured GitCarve for context-driven commits with .gitcarve/config.yaml and .gitcarve/context/content.md.\n- Added GitHub Actions workflows: codeql.yml for code analysis, dependency-review.yml for dependency security checks, pnpm-publish.yml for Node.js package publishing, and test.yml for automated tests.\n- Setup Dependabot with .github/dependabot.yml for managing npm dependencies.\n- Implemented a mocked test structure using Jest, covering utilities and core functionalities.\n- Created tsconfig.json for TypeScript compilation and setup npm packaging details in package.json.\n- Introduced a Vite configuration for building and bundling the application.\"\n\n---\n",
|
|
191
|
+
"name": "get_file_history"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"role": "tool",
|
|
195
|
+
"tool_call_id": "call_sheTAHSoLQ52bJLmxf9IDhSB",
|
|
196
|
+
"content": "0078681 - chore(release): bump package version to 0.0.11 (Tim O'Brien, 3 weeks ago)\n2c2d866 - 0.0.4 (SemicolonAmbulance, 7 months ago)\n",
|
|
197
|
+
"name": "get_file_history"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"role": "assistant",
|
|
201
|
+
"content": "COMMIT_MESSAGE:\nci: update test workflow configuration\n\nSUGGESTED_SPLITS:\nSplit 1:\nFiles: [.github/workflows/test.yml]\nRationale: CI-only change (separate concern from docs/app and package metadata). Also modified in a later session than the other files.\nMessage: ci: update test workflow configuration\n\nSplit 2:\nFiles: [docs/src/App.tsx, package.json]\nRationale: Docs UI changes plus npm script/package configuration changes are logically related (developer/docs tooling + docs site behavior) and were modified in the same time window.\nMessage: docs: add sectioned docs app navigation and align docs npm scripts"
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
</details>
|
|
207
|
+
|
|
208
|
+
## Generated Commit Message
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
ci: update test workflow configuration
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Suggested Commit Splits
|
|
215
|
+
|
|
216
|
+
### Split 1
|
|
217
|
+
|
|
218
|
+
**Files**: .github/workflows/test.yml
|
|
219
|
+
|
|
220
|
+
**Rationale**: CI-only change (separate concern from docs/app and package metadata). Also modified in a later session than the other files.
|
|
221
|
+
|
|
222
|
+
**Message**:
|
|
223
|
+
```
|
|
224
|
+
ci: update test workflow configuration
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Split 2
|
|
228
|
+
|
|
229
|
+
**Files**: docs/src/App.tsx, package.json
|
|
230
|
+
|
|
231
|
+
**Rationale**: Docs UI changes plus npm script/package configuration changes are logically related (developer/docs tooling + docs site behavior) and were modified in the same time window.
|
|
232
|
+
|
|
233
|
+
**Message**:
|
|
234
|
+
```
|
|
235
|
+
docs: add sectioned docs app navigation and align docs npm scripts
|
|
236
|
+
```
|