@girverket/xenocline 0.0.9

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 (112) hide show
  1. package/LICENSE.md +66 -0
  2. package/README.md +739 -0
  3. package/dist/aggregator.d.ts +53 -0
  4. package/dist/aggregator.js +31 -0
  5. package/dist/aggregator.js.map +1 -0
  6. package/dist/constants.d.ts +2 -0
  7. package/dist/context.d.ts +3 -0
  8. package/dist/event/aggregator.d.ts +16 -0
  9. package/dist/event/aggregator.js +29 -0
  10. package/dist/event/aggregator.js.map +1 -0
  11. package/dist/event/event.d.ts +14 -0
  12. package/dist/event/event.js +12 -0
  13. package/dist/event/event.js.map +1 -0
  14. package/dist/event/handler.d.ts +7 -0
  15. package/dist/event/handler.js +8 -0
  16. package/dist/event/handler.js.map +1 -0
  17. package/dist/event/node.d.ts +40 -0
  18. package/dist/event/node.js +24 -0
  19. package/dist/event/node.js.map +1 -0
  20. package/dist/event/phase.d.ts +15 -0
  21. package/dist/event/phase.js +12 -0
  22. package/dist/event/phase.js.map +1 -0
  23. package/dist/event/process.d.ts +14 -0
  24. package/dist/event/process.js +15 -0
  25. package/dist/event/process.js.map +1 -0
  26. package/dist/event/transition.d.ts +45 -0
  27. package/dist/event/transition.js +35 -0
  28. package/dist/event/transition.js.map +1 -0
  29. package/dist/event.d.ts +30 -0
  30. package/dist/execution/aggregator.d.ts +23 -0
  31. package/dist/execution/aggregator.js +81 -0
  32. package/dist/execution/aggregator.js.map +1 -0
  33. package/dist/execution/event.d.ts +26 -0
  34. package/dist/execution/event.js +29 -0
  35. package/dist/execution/event.js.map +1 -0
  36. package/dist/execution/next.d.ts +7 -0
  37. package/dist/execution/next.js +137 -0
  38. package/dist/execution/next.js.map +1 -0
  39. package/dist/execution/node.d.ts +4 -0
  40. package/dist/execution/node.js +194 -0
  41. package/dist/execution/node.js.map +1 -0
  42. package/dist/execution/phase.d.ts +5 -0
  43. package/dist/execution/phase.js +23 -0
  44. package/dist/execution/phase.js.map +1 -0
  45. package/dist/execution/process.d.ts +35 -0
  46. package/dist/execution/process.js +115 -0
  47. package/dist/execution/process.js.map +1 -0
  48. package/dist/input.d.ts +6 -0
  49. package/dist/input.js +4 -0
  50. package/dist/input.js.map +1 -0
  51. package/dist/logger.d.ts +12 -0
  52. package/dist/node/aggregatornode.d.ts +40 -0
  53. package/dist/node/aggregatornode.js +41 -0
  54. package/dist/node/aggregatornode.js.map +1 -0
  55. package/dist/node/node.d.ts +18 -0
  56. package/dist/node/node.js +80 -0
  57. package/dist/node/node.js.map +1 -0
  58. package/dist/node/phasenode.d.ts +49 -0
  59. package/dist/node/phasenode.js +37 -0
  60. package/dist/node/phasenode.js.map +1 -0
  61. package/dist/output.d.ts +6 -0
  62. package/dist/phase.d.ts +23 -0
  63. package/dist/phase.js +24 -0
  64. package/dist/phase.js.map +1 -0
  65. package/dist/process.d.ts +15 -0
  66. package/dist/process.js +106 -0
  67. package/dist/process.js.map +1 -0
  68. package/dist/transition/beginning.d.ts +19 -0
  69. package/dist/transition/beginning.js +31 -0
  70. package/dist/transition/beginning.js.map +1 -0
  71. package/dist/transition/connection.d.ts +55 -0
  72. package/dist/transition/connection.js +90 -0
  73. package/dist/transition/connection.js.map +1 -0
  74. package/dist/transition/decision.d.ts +20 -0
  75. package/dist/transition/decision.js +47 -0
  76. package/dist/transition/decision.js.map +1 -0
  77. package/dist/transition/next.d.ts +13 -0
  78. package/dist/transition/next.js +81 -0
  79. package/dist/transition/next.js.map +1 -0
  80. package/dist/transition/termination.d.ts +17 -0
  81. package/dist/transition/termination.js +50 -0
  82. package/dist/transition/termination.js.map +1 -0
  83. package/dist/transition/transition.d.ts +16 -0
  84. package/dist/transition/transition.js +72 -0
  85. package/dist/transition/transition.js.map +1 -0
  86. package/dist/util/general.d.ts +4 -0
  87. package/dist/util/general.js +6 -0
  88. package/dist/util/general.js.map +1 -0
  89. package/dist/utility/event/eventfilter.d.ts +7 -0
  90. package/dist/utility/event/eventfilter.js +15 -0
  91. package/dist/utility/event/eventfilter.js.map +1 -0
  92. package/dist/utility/event/filteredhandler.d.ts +13 -0
  93. package/dist/utility/event/filteredhandler.js +18 -0
  94. package/dist/utility/event/filteredhandler.js.map +1 -0
  95. package/dist/utility/event/logginghandler.d.ts +12 -0
  96. package/dist/xenocline.cjs +1362 -0
  97. package/dist/xenocline.cjs.map +1 -0
  98. package/dist/xenocline.d.ts +72 -0
  99. package/dist/xenocline.js +21 -0
  100. package/dist/xenocline.js.map +1 -0
  101. package/output/kodrdriv/260109-2305-commit-message.md +3 -0
  102. package/output/kodrdriv/260109-2307-release-notes.md +28 -0
  103. package/output/kodrdriv/260109-2318-commit-message.md +6 -0
  104. package/output/kodrdriv/260109-2321-release-notes.md +39 -0
  105. package/output/kodrdriv/RELEASE_NOTES.md +37 -0
  106. package/output/kodrdriv/RELEASE_TITLE.md +1 -0
  107. package/output/kodrdriv/agentic-reflection-commit-2026-01-10T07-05-39-771Z.md +52 -0
  108. package/output/kodrdriv/agentic-reflection-commit-2026-01-10T07-18-31-315Z.md +55 -0
  109. package/output/kodrdriv/agentic-reflection-release-2026-01-10T07-07-33-739Z.md +257 -0
  110. package/output/kodrdriv/agentic-reflection-release-2026-01-10T07-21-54-717Z.md +394 -0
  111. package/package.json +69 -0
  112. package/scripts/pre-commit-hook.sh +53 -0
@@ -0,0 +1,394 @@
1
+ # Agentic Workflow - Self-Reflection Report
2
+
3
+ Generated: 2026-01-10T07:21:54.718Z
4
+
5
+ ## Execution Summary
6
+
7
+ - **Iterations**: 10
8
+ - **Tool Calls**: 14
9
+ - **Unique Tools**: 8
10
+
11
+ ## Tool Effectiveness Analysis
12
+
13
+ | Tool | Calls | Success | Failures | Success Rate | Avg Duration |
14
+ |------|-------|---------|----------|--------------|--------------|
15
+ | search_codebase | 5 | 4 | 1 | 80.0% | 21ms |
16
+ | get_file_content | 3 | 3 | 0 | 100.0% | 1ms |
17
+ | get_file_history | 2 | 2 | 0 | 100.0% | 20ms |
18
+ | get_tag_history | 1 | 1 | 0 | 100.0% | 45ms |
19
+ | get_release_stats | 1 | 1 | 0 | 100.0% | 36ms |
20
+ | analyze_commit_patterns | 1 | 1 | 0 | 100.0% | 7ms |
21
+ | get_breaking_changes | 1 | 1 | 0 | 100.0% | 21ms |
22
+ | compare_previous_release | 1 | 1 | 0 | 100.0% | 37ms |
23
+
24
+ ### Tool Performance Insights
25
+
26
+ **Tools with Failures:**
27
+ - search_codebase: 1/5 failures (20.0%)
28
+
29
+ **Most Frequently Used:**
30
+ - get_tag_history: 1 calls
31
+ - get_release_stats: 1 calls
32
+ - analyze_commit_patterns: 1 calls
33
+
34
+ ## Recommendations for Improvement
35
+
36
+ - **Tool Failures**: Investigate and fix tools that are failing. This may indicate issues with error handling or tool implementation.
37
+ - **Underutilized Tools**: Many tools were called only once. Consider whether all tools are necessary or if the agent needs better guidance on when to use them.
38
+
39
+ ## Detailed Execution Timeline
40
+
41
+ | Time | Iteration | Tool | Result | Duration |
42
+ |------|-----------|------|--------|----------|
43
+ | 11:19:07 PM | 1 | get_tag_history | ✅ Success | 45ms |
44
+ | 11:19:07 PM | 1 | get_release_stats | ✅ Success | 36ms |
45
+ | 11:19:07 PM | 1 | analyze_commit_patterns | ✅ Success | 7ms |
46
+ | 11:19:07 PM | 1 | get_breaking_changes | ✅ Success | 21ms |
47
+ | 11:19:14 PM | 2 | search_codebase | ✅ Success | 24ms |
48
+ | 11:19:14 PM | 2 | search_codebase | ✅ Success | 11ms |
49
+ | 11:19:14 PM | 2 | get_file_content | ✅ Success | 1ms |
50
+ | 11:19:14 PM | 2 | get_file_content | ✅ Success | 0ms |
51
+ | 11:19:34 PM | 3 | compare_previous_release | ✅ Success | 37ms |
52
+ | 11:19:57 PM | 4 | search_codebase | ✅ Success | 30ms |
53
+ | 11:19:58 PM | 5 | get_file_content | ✅ Success | 1ms |
54
+ | 11:20:00 PM | 6 | get_file_history | ✅ Success | 17ms |
55
+ | 11:20:46 PM | 7 | get_file_history | ✅ Success | 23ms |
56
+ | 11:20:47 PM | 8 | search_codebase | ❌ Tool "search_codebase" execution failed: Search failed: Command failed: git grep -n -C 2 "codecov"
57
+ | 23ms |
58
+ | 11:20:49 PM | 9 | search_codebase | ✅ Success | 16ms |
59
+
60
+ ## Conversation History
61
+
62
+ <details>
63
+ <summary>Click to expand full agentic interaction</summary>
64
+
65
+ ```json
66
+ [
67
+ {
68
+ "role": "system",
69
+ "content": "You are a professional software engineer writing release notes for your team and users.\n\n## Available Tools\n\n### General\n\n**get_file_history**\nGet git commit history for one or more files to understand their evolution and past changes\n\nParameters:\n- `filePaths` (required): Array of file paths to get history for\n- `limit`: Maximum number of commits to return (default: 10)\n- `format`: Output format: \"summary\" for brief or \"detailed\" for full messages\n\n**When to use:** Get git commit history for one or more files to understand their evolution and past changes\n\n---\n\n**get_file_content**\nGet the complete current content of a file to understand context around changes. Returns a message if the file does not exist (e.g., if it was deleted).\n\nParameters:\n- `filePath` (required): Path to the file\n- `includeLineNumbers`: Include line numbers in output (default: false)\n\n**When to use:** Get the complete current content of a file to understand context around changes. Returns a message if the file does not exist (e.g., if it was deleted).\n\n---\n\n**search_codebase**\nSearch for code patterns, function names, or text across the codebase using git grep\n\nParameters:\n- `query` (required): Search pattern (can be plain text or regex)\n- `fileTypes`: Limit search to specific file extensions (e.g., [\"ts\", \"js\"])\n- `contextLines`: Number of context lines to show around matches (default: 2)\n\n**When to use:** Search for code patterns, function names, or text across the codebase using git grep\n\n---\n\n**get_related_tests**\nFind test files related to production files to understand what the code is supposed to do\n\nParameters:\n- `filePaths` (required): Production file paths\n\n**When to use:** Find test files related to production files to understand what the code is supposed to do\n\n---\n\n**get_file_dependencies**\nFind which files import or depend on the changed files to assess change impact\n\nParameters:\n- `filePaths` (required): Files to analyze dependencies for\n\n**When to use:** Find which files import or depend on the changed files to assess change impact\n\n---\n\n**analyze_diff_section**\nGet expanded context around specific lines in a file to better understand changes\n\nParameters:\n- `filePath` (required): File containing the section to analyze\n- `startLine` (required): Starting line number\n- `endLine` (required): Ending line number\n- `contextLines`: Number of additional context lines to show before and after (default: 10)\n\n**When to use:** Get expanded context around specific lines in a file to better understand changes\n\n---\n\n**get_recent_commits**\nGet recent commits that modified the same files to understand recent work in this area\n\nParameters:\n- `filePaths` (required): Files to check for recent commits\n- `since`: Time period to look back (e.g., \"1 week ago\", \"2 days ago\")\n- `limit`: Maximum number of commits to return (default: 5)\n\n**When to use:** Get recent commits that modified the same files to understand recent work in this area\n\n---\n\n**group_files_by_concern**\nAnalyze changed files and suggest logical groupings that might represent separate concerns\n\nParameters:\n- `filePaths` (required): All changed files to analyze\n\n**When to use:** Analyze changed files and suggest logical groupings that might represent separate concerns\n\n---\n\n### Release Analysis\n\n**get_tag_history** _(cheap)_\nGet the history of previous release tags to understand release patterns and versioning\n\nParameters:\n- `limit`: Number of recent tags to retrieve (default: 10)\n- `pattern`: Filter tags by pattern (e.g., \"v*\" for version tags)\n\n**When to use:** Get the history of previous release tags to understand release patterns and versioning\n\n**Examples:**\n- Check recent version tags: `get_tag_history({\"limit\":5,\"pattern\":\"v*\"})`\n\n---\n\n**compare_previous_release** _(moderate)_\nCompare this release with a previous release to understand what changed between versions\n\nParameters:\n- `previousTag` (required): Previous release tag to compare against\n- `currentRef`: Current reference (default: HEAD)\n- `statsOnly`: Return only statistics, not full diff (default: true)\n\n**When to use:** Compare this release with a previous release to understand what changed between versions\n\n**Examples:**\n- Compare with last release: `compare_previous_release({\"previousTag\":\"v1.0.0\",\"currentRef\":\"HEAD\"})`\n\n---\n\n**get_release_stats** _(moderate)_\nGet comprehensive statistics about the release including contributors, file changes, and commit patterns\n\nParameters:\n- `fromRef` (required): Starting reference for the release range\n- `toRef`: Ending reference for the release range (default: HEAD)\n\n**When to use:** Get comprehensive statistics about the release including contributors, file changes, and commit patterns\n\n**Examples:**\n- Get release overview: `get_release_stats({\"fromRef\":\"v1.0.0\",\"toRef\":\"HEAD\"})`\n\n---\n\n**get_breaking_changes** _(expensive)_\nSearch for potential breaking changes by looking for specific patterns in commits and diffs\n\nParameters:\n- `fromRef` (required): Starting reference for the release range\n- `toRef`: Ending reference for the release range (default: HEAD)\n\n**When to use:** Search for potential breaking changes by looking for specific patterns in commits and diffs\n\n**Examples:**\n- Check for breaking changes: `get_breaking_changes({\"fromRef\":\"v1.0.0\",\"toRef\":\"HEAD\"})`\n\n---\n\n**analyze_commit_patterns** _(cheap)_\nAnalyze commit messages to identify patterns and themes in the release\n\nParameters:\n- `fromRef` (required): Starting reference for the release range\n- `toRef`: Ending reference for the release range (default: HEAD)\n\n**When to use:** Analyze commit messages to identify patterns and themes in the release\n\n**Examples:**\n- Find commit themes: `analyze_commit_patterns({\"fromRef\":\"v1.0.0\",\"toRef\":\"HEAD\"})`\n\n---\n\n\n\n## Your Task\n\nWrite release notes that clearly explain what's in this release and why it matters. Your notes should help users and developers understand what changed without needing to read every commit.\n\nFocus on:\n- What problems does this release solve?\n- What new capabilities does it add?\n- What's the impact on users and developers?\n- Are there breaking changes or important considerations?\n\nUse the available tools to investigate the changes. The more you understand, the better your notes will be.\n\n**Important**: If additional context is provided (from context files or other sources), use your judgment:\n- If the context is relevant to this specific package/release, incorporate it appropriately\n- If the context describes changes in other packages or unrelated work, ignore it\n- Don't fabricate connections between this package and unrelated context\n- Be honest about what changed - only mention what actually happened in this release\n- Context is supplemental information, not a requirement to include\n\n## Investigation Approach\n\nUse tools based on what you need to know:\n\n**Context:**\n- get_tag_history - understand release patterns\n- get_release_stats - quantify scope\n- compare_previous_release - see how this compares\n\n**Understanding:**\n- group_files_by_concern - identify themes\n- analyze_commit_patterns - detect patterns\n- get_file_content - see full context\n- analyze_diff_section - expand unclear changes\n- get_file_history - understand evolution\n\n**Impact:**\n- get_file_dependencies - assess reach\n- search_codebase - find usage patterns\n- get_related_tests - understand behavior changes\n- get_breaking_changes - identify breaking changes (always use)\n\n## Writing Style\n\nWrite naturally and directly:\n- Use plain language that users can understand\n- Be specific about what changed and why\n- Avoid marketing speak and buzzwords\n- No emojis or excessive punctuation\n- No phrases like \"we're excited to announce\"\n- No meta-commentary about the release itself\n- Focus on facts and implications, not enthusiasm\n\nStructure your notes logically:\n- Start with the most important changes\n- Group related changes together\n- Explain breaking changes clearly\n- Include practical examples when helpful\n\n## Output Format\n\nWhen ready, format your response as JSON:\n\nRELEASE_NOTES:\n{\n \"title\": \"Clear, factual title describing the main changes\",\n \"body\": \"Detailed release notes in Markdown format\"\n}\n\nOutput only the JSON. No conversational remarks or follow-up offers."
70
+ },
71
+ {
72
+ "role": "user",
73
+ "content": "I need comprehensive release notes for changes from main to HEAD.\n\n## Commit Log\ncommit 04a4bec265d97966baa0a063e9e87c0b56297eb5\nAuthor: Tim O'Brien <tobrien@discursive.com>\nDate: Fri Jan 9 23:18:31 2026 -0800\n\n chore(deps): bump doccident and upgrade vitest toolchain\n \n - Update @doccident/doccident to ^0.0.7\n - Upgrade vitest and @vitest/coverage-v8 to ^4.0.16\n - Bump @types/node to ^25.0.5 and globals to ^17.0.0\n - Refresh package-lock.json to match updated dependency graph\n\ncommit be1442fcebfd7e9c9b9cabc197f1865a3e664ae4\nAuthor: Tim O'Brien <tobrien@discursive.com>\nDate: Fri Jan 9 23:14:36 2026 -0800\n\n Removed pnpm from test workflow\n\ncommit 7a72659575cf236b8da2f9dc8564725b5bf14f40\nAuthor: Tim O'Brien <tobrien@discursive.com>\nDate: Fri Jan 9 23:05:39 2026 -0800\n\n chore(release): bump package version to 0.0.9\n \n Remove the `-dev.0` prerelease suffix in `package.json` (0.0.9-dev.0 -> 0.0.9) to mark the 0.0.9 release.\n\n\n## Diff Summary\ndiff --git a/.github/workflows/test.yml b/.github/workflows/test.yml\nindex d8ece62..e8db163 100644\n--- a/.github/workflows/test.yml\n+++ b/.github/workflows/test.yml\n@@ -20,12 +20,7 @@ jobs:\n - uses: actions/setup-node@v4\n with:\n node-version: 22\n- - uses: pnpm/action-setup@v4\n- - run: pnpm install --frozen-lockfile --strict-peer-dependencies\n- - run: pnpm run lint\n- - run: pnpm run build\n- - run: pnpm test --coverage\n- - uses: codecov/codecov-action@v5\n- with:\n- slug: maxdrellin/xenocline\n- token: ${{ secrets.CODECOV_TOKEN }}\n+ - run: npm ci\n+ - run: npm run lint\n+ - run: npm run build\n+ - run: npm test\ndiff --git a/package.json b/package.json\nindex 5acb414..8d85cdb 100644\n--- a/package.json\n+++ b/package.json\n@@ -1,6 +1,6 @@\n {\n \"name\": \"@maxdrellin/xenocline\",\n- \"version\": \"0.0.8\",\n+ \"version\": \"0.0.9\",\n \"description\": \"Xenocline provides a streamlined, modular framework to manage and execute Processor Pipelines—sequences of computational steps or tasks executed systematically to process data or events. It allows developers to define, connect, and orchestrate individual processors into efficient workflows, supporting clear separation of concerns, scalability, and ease of maintenance.\",\n \"main\": \"dist/xenocline.cjs\",\n \"module\": \"dist/xenocline.js\",\n@@ -10,7 +10,7 @@\n },\n \"repository\": {\n \"type\": \"git\",\n- \"url\": \"git+https://github.com/maxdrellin/xenocline.git\"\n+ \"url\": \"git+https://github.com/girverket/xenocline.git\"\n },\n \"exports\": {\n \".\": {\n@@ -41,7 +41,7 @@\n \"author\": \"Max Drellin <maxdrellin@yahoo.com>\",\n \"license\": \"Apache-2.0\",\n \"dependencies\": {\n- \"@doccident/doccident\": \"^0.0.1\"\n+ \"@doccident/doccident\": \"^0.0.7\"\n },\n \"devDependencies\": {\n \"@babel/core\": \"^7.28.0\",\n@@ -52,18 +52,18 @@\n \"@eslint/js\": \"^9.30.1\",\n \"@rollup/plugin-replace\": \"^6.0.2\",\n \"@swc/core\": \"^1.12.11\",\n- \"@types/node\": \"^24.0.12\",\n+ \"@types/node\": \"^25.0.5\",\n \"@typescript-eslint/eslint-plugin\": \"^8.36.0\",\n \"@typescript-eslint/parser\": \"^8.36.0\",\n- \"@vitest/coverage-v8\": \"^2.1.8\",\n+ \"@vitest/coverage-v8\": \"^4.0.16\",\n \"copyfiles\": \"^2.4.1\",\n \"eslint\": \"^9.30.1\",\n \"eslint-plugin-import\": \"^2.32.0\",\n- \"globals\": \"^16.3.0\",\n+ \"globals\": \"^17.0.0\",\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\": \"^2.1.8\"\n+ \"vitest\": \"^4.0.16\"\n }\n }\n\n\nAnalyze these changes and write clear release notes. Consider:\n- What's the main story of this release?\n- What problems does it solve?\n- What's the impact on users and developers?\n- Are there breaking changes?\n\nIf context information is provided, use it only if relevant to this specific package.\nDon't force connections that don't exist - if context describes changes in other packages\nor unrelated features, simply ignore it and focus on what actually changed in this release.\n\nInvestigate as needed to write accurate, helpful release notes."
74
+ },
75
+ {
76
+ "role": "assistant",
77
+ "content": null,
78
+ "tool_calls": [
79
+ {
80
+ "id": "call_cscDiRxoLdrKRnGk2dhbblN2",
81
+ "type": "function",
82
+ "function": {
83
+ "name": "get_tag_history",
84
+ "arguments": "{\"limit\": 20, \"pattern\": \"v*\"}"
85
+ }
86
+ },
87
+ {
88
+ "id": "call_UiLTiuvtSb4Mj9eitBoryxlP",
89
+ "type": "function",
90
+ "function": {
91
+ "name": "get_release_stats",
92
+ "arguments": "{\"fromRef\": \"main\", \"toRef\": \"HEAD\"}"
93
+ }
94
+ },
95
+ {
96
+ "id": "call_v8TnQTjFxSCgZ0MyP6vjYxlA",
97
+ "type": "function",
98
+ "function": {
99
+ "name": "analyze_commit_patterns",
100
+ "arguments": "{\"fromRef\": \"main\", \"toRef\": \"HEAD\"}"
101
+ }
102
+ },
103
+ {
104
+ "id": "call_vP1AoGZgwSOE5S4davEO5Y3f",
105
+ "type": "function",
106
+ "function": {
107
+ "name": "get_breaking_changes",
108
+ "arguments": "{\"fromRef\": \"main\", \"toRef\": \"HEAD\"}"
109
+ }
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "role": "tool",
115
+ "tool_call_id": "call_cscDiRxoLdrKRnGk2dhbblN2",
116
+ "content": "Recent release tags:\nv0.0.8: 2025-12-27 15:37:53 -0800 - chore(release): bump package version to 0.0.8\nv0.0.7: 2025-12-27 09:28:02 -0800 - chore(release): bump @maxdrellin/xenocline version to 0.0.7\nv0.0.6: 2025-12-27 09:08:15 -0800 - chore(release): bump package version to 0.0.6\nv0.0.5: tag v0.0.5\nTagger: Max Drellin <maxdrellin@yahoo.com>\n\n0.0.5\n2025-07-10 08:24:03 -0700 - 0.0.5\nv0.0.2: tag v0.0.2\nTagger: Max Drellin <maxdrellin@yahoo.com>\n\n0.0.2\n2025-05-24 10:51:59 -0700 - 0.0.2",
117
+ "name": "get_tag_history"
118
+ },
119
+ {
120
+ "role": "tool",
121
+ "tool_call_id": "call_UiLTiuvtSb4Mj9eitBoryxlP",
122
+ "content": "Total commits: 16\n\nContributors:\n 16\tTim O'Brien\n\n\nFile changes: 3 files changed, 4605 insertions(+), 7178 deletions(-)\n\nTop 10 most changed files:\n package.json | 14 +-\n package-lock.json | 11756 +++++++++++++++++--------------------------\n 3 files changed, 4605 insertions(+), 7178 deletions(-)\n .github/workflows/test.yml | 13 +-\n",
123
+ "name": "get_release_stats"
124
+ },
125
+ {
126
+ "role": "tool",
127
+ "tool_call_id": "call_v8TnQTjFxSCgZ0MyP6vjYxlA",
128
+ "content": "Commit types:\n chore: 5\n\nTop keywords in commits:\n release: 6\n chore: 5\n version: 5\n package: 4\n doccident: 1\n upgrade: 1\n vitest: 1\n toolchain: 1\n removed: 1\n workflow: 1\n updated: 1\n github: 1\n repository: 1\n maxdrellin: 1\n xenocline: 1",
129
+ "name": "analyze_commit_patterns"
130
+ },
131
+ {
132
+ "role": "tool",
133
+ "tool_call_id": "call_vP1AoGZgwSOE5S4davEO5Y3f",
134
+ "content": "No obvious breaking changes detected. Manual review recommended for API changes.",
135
+ "name": "get_breaking_changes"
136
+ },
137
+ {
138
+ "role": "assistant",
139
+ "content": null,
140
+ "tool_calls": [
141
+ {
142
+ "id": "call_Mqtb3B8QcPXNnZc4aFbVLxBO",
143
+ "type": "function",
144
+ "function": {
145
+ "name": "search_codebase",
146
+ "arguments": "{\"query\": \"@doccident/doccident\", \"contextLines\": 2}"
147
+ }
148
+ },
149
+ {
150
+ "id": "call_ULdF0hNYfutMAhDMwzAGoO7H",
151
+ "type": "function",
152
+ "function": {
153
+ "name": "search_codebase",
154
+ "arguments": "{\"query\": \"doccident\", \"contextLines\": 2}"
155
+ }
156
+ },
157
+ {
158
+ "id": "call_G4P9Ebzvj5RlYJYQAXVurIOj",
159
+ "type": "function",
160
+ "function": {
161
+ "name": "get_file_content",
162
+ "arguments": "{\"filePath\": \"package.json\", \"includeLineNumbers\": true}"
163
+ }
164
+ },
165
+ {
166
+ "id": "call_weaYSeaONO12cCejQxlCAFsR",
167
+ "type": "function",
168
+ "function": {
169
+ "name": "get_file_content",
170
+ "arguments": "{\"filePath\": \".github/workflows/test.yml\", \"includeLineNumbers\": true}"
171
+ }
172
+ }
173
+ ]
174
+ },
175
+ {
176
+ "role": "tool",
177
+ "tool_call_id": "call_Mqtb3B8QcPXNnZc4aFbVLxBO",
178
+ "content": "package-lock.json-10- \"license\": \"Apache-2.0\",\npackage-lock.json-11- \"dependencies\": {\npackage-lock.json:12: \"@doccident/doccident\": \"^0.0.7\"\npackage-lock.json-13- },\npackage-lock.json-14- \"bin\": {\n--\npackage-lock.json-482- }\npackage-lock.json-483- },\npackage-lock.json:484: \"node_modules/@doccident/doccident\": {\npackage-lock.json-485- \"version\": \"0.0.7\",\npackage-lock.json:486: \"resolved\": \"https://registry.npmjs.org/@doccident/doccident/-/doccident-0.0.7.tgz\",\npackage-lock.json-487- \"integrity\": \"sha512-7X+5TH3bD6Xh6wtnrXoRmP3Chqayiun20HXrVB0tunD4IR1STb5TSLEEx6GFsDQygYoWckblKS5TG/uv9wcDRg==\",\npackage-lock.json-488- \"license\": \"Apache-2.0\",\n--\npackage-lock.json-498- }\npackage-lock.json-499- },\npackage-lock.json:500: \"node_modules/@doccident/doccident/node_modules/globals\": {\npackage-lock.json-501- \"version\": \"16.5.0\",\npackage-lock.json-502- \"resolved\": \"https://registry.npmjs.org/globals/-/globals-16.5.0.tgz\",\n--\npackage.json-42- \"license\": \"Apache-2.0\",\npackage.json-43- \"dependencies\": {\npackage.json:44: \"@doccident/doccident\": \"^0.0.7\"\npackage.json-45- },\npackage.json-46- \"devDependencies\": {\n",
179
+ "name": "search_codebase"
180
+ },
181
+ {
182
+ "role": "tool",
183
+ "tool_call_id": "call_ULdF0hNYfutMAhDMwzAGoO7H",
184
+ "content": ".doccident-setup.mjs-21- },\n.doccident-setup.mjs-22- transformCode: (code) => {\n.doccident-setup.mjs:23: // Transform TypeScript code to JavaScript for doccident documentation testing\n.doccident-setup.mjs-24- const transformedCode = transform(code, {\n.doccident-setup.mjs-25- filename: 'test.ts',\n--\n.npmignore-32-.kodrdriv/\n.npmignore-33-__mocks__/\n.npmignore:34:.doccident-setup.mjs\n.npmignore-35-README.md\n.npmignore-36-eslint.config.mjs\n--\npackage-lock.json-10- \"license\": \"Apache-2.0\",\npackage-lock.json-11- \"dependencies\": {\npackage-lock.json:12: \"@doccident/doccident\": \"^0.0.7\"\npackage-lock.json-13- },\npackage-lock.json-14- \"bin\": {\n--\npackage-lock.json-482- }\npackage-lock.json-483- },\npackage-lock.json:484: \"node_modules/@doccident/doccident\": {\npackage-lock.json-485- \"version\": \"0.0.7\",\npackage-lock.json:486: \"resolved\": \"https://registry.npmjs.org/@doccident/doccident/-/doccident-0.0.7.tgz\",\npackage-lock.json-487- \"integrity\": \"sha512-7X+5TH3bD6Xh6wtnrXoRmP3Chqayiun20HXrVB0tunD4IR1STb5TSLEEx6GFsDQygYoWckblKS5TG/uv9wcDRg==\",\npackage-lock.json-488- \"license\": \"Apache-2.0\",\n--\npackage-lock.json-495- },\npackage-lock.json-496- \"bin\": {\npackage-lock.json:497: \"doccident\": \"bin/cmd.js\"\npackage-lock.json-498- }\npackage-lock.json-499- },\npackage-lock.json:500: \"node_modules/@doccident/doccident/node_modules/globals\": {\npackage-lock.json-501- \"version\": \"16.5.0\",\npackage-lock.json-502- \"resolved\": \"https://registry.npmjs.org/globals/-/globals-16.5.0.tgz\",\n--\npackage.json-27- \"test\": \"npm run test:coverage && npm run test:readme\",\npackage.json-28- \"test:coverage\": \"vitest run --coverage\",\npackage.json:29: \"test:readme\": \"doccident -c .doccident-setup.mjs README.md\",\npackage.json-30- \"lint\": \"eslint . --ext .ts\",\npackage.json-31- \"lint:fix\": \"eslint . --ext .ts --fix\",\n--\npackage.json-42- \"license\": \"Apache-2.0\",\npackage.json-43- \"dependencies\": {\npackage.json:44: \"@doccident/doccident\": \"^0.0.7\"\npackage.json-45- },\npackage.json-46- \"devDependencies\": {\n",
185
+ "name": "search_codebase"
186
+ },
187
+ {
188
+ "role": "tool",
189
+ "tool_call_id": "call_G4P9Ebzvj5RlYJYQAXVurIOj",
190
+ "content": "1: {\n2: \"name\": \"@maxdrellin/xenocline\",\n3: \"version\": \"0.0.9\",\n4: \"description\": \"Xenocline provides a streamlined, modular framework to manage and execute Processor Pipelines—sequences of computational steps or tasks executed systematically to process data or events. It allows developers to define, connect, and orchestrate individual processors into efficient workflows, supporting clear separation of concerns, scalability, and ease of maintenance.\",\n5: \"main\": \"dist/xenocline.cjs\",\n6: \"module\": \"dist/xenocline.js\",\n7: \"type\": \"module\",\n8: \"bin\": {\n9: \"xenocline\": \"./dist/xenocline.cjs\"\n10: },\n11: \"repository\": {\n12: \"type\": \"git\",\n13: \"url\": \"git+https://github.com/girverket/xenocline.git\"\n14: },\n15: \"exports\": {\n16: \".\": {\n17: \"types\": \"./dist/xenocline.d.ts\",\n18: \"import\": \"./dist/xenocline.js\",\n19: \"require\": \"./dist/xenocline.cjs\"\n20: }\n21: },\n22: \"scripts\": {\n23: \"build\": \"npm run lint && tsc --noEmit && vite build && copyfiles -u 1 \\\"src/**/*.md\\\" dist && copyfiles -u 1 \\\"src/**/*.yaml\\\" dist\",\n24: \"start\": \"node dist/xenocline.cjs\",\n25: \"dev\": \"vite\",\n26: \"watch\": \"vite build --watch\",\n27: \"test\": \"npm run test:coverage && npm run test:readme\",\n28: \"test:coverage\": \"vitest run --coverage\",\n29: \"test:readme\": \"doccident -c .doccident-setup.mjs README.md\",\n30: \"lint\": \"eslint . --ext .ts\",\n31: \"lint:fix\": \"eslint . --ext .ts --fix\",\n32: \"clean\": \"rm -rf dist\",\n33: \"precommit\": \"npm run build && npm run lint && npm run test\",\n34: \"prepublishOnly\": \"npm run lint && npm run build && npm run test\"\n35: },\n36: \"keywords\": [\n37: \"pipeline\",\n38: \"execution\",\n39: \"workflow\"\n40: ],\n41: \"author\": \"Max Drellin <maxdrellin@yahoo.com>\",\n42: \"license\": \"Apache-2.0\",\n43: \"dependencies\": {\n44: \"@doccident/doccident\": \"^0.0.7\"\n45: },\n46: \"devDependencies\": {\n47: \"@babel/core\": \"^7.28.0\",\n48: \"@babel/plugin-transform-modules-commonjs\": \"^7.27.1\",\n49: \"@babel/plugin-transform-typescript\": \"^7.28.0\",\n50: \"@babel/preset-typescript\": \"^7.27.1\",\n51: \"@eslint/eslintrc\": \"^3.3.1\",\n52: \"@eslint/js\": \"^9.30.1\",\n53: \"@rollup/plugin-replace\": \"^6.0.2\",\n54: \"@swc/core\": \"^1.12.11\",\n55: \"@types/node\": \"^25.0.5\",\n56: \"@typescript-eslint/eslint-plugin\": \"^8.36.0\",\n57: \"@typescript-eslint/parser\": \"^8.36.0\",\n58: \"@vitest/coverage-v8\": \"^4.0.16\",\n59: \"copyfiles\": \"^2.4.1\",\n60: \"eslint\": \"^9.30.1\",\n61: \"eslint-plugin-import\": \"^2.32.0\",\n62: \"globals\": \"^17.0.0\",\n63: \"typescript\": \"^5.8.3\",\n64: \"vite\": \"^7.0.4\",\n65: \"vite-plugin-dts\": \"^4.5.4\",\n66: \"vite-plugin-node\": \"^7.0.0\",\n67: \"vitest\": \"^4.0.16\"\n68: }\n69: }\n70: ",
191
+ "name": "get_file_content"
192
+ },
193
+ {
194
+ "role": "tool",
195
+ "tool_call_id": "call_weaYSeaONO12cCejQxlCAFsR",
196
+ "content": "1: name: Run Tests\n2: \n3: permissions:\n4: contents: read\n5: statuses: write\n6: \n7: on:\n8: push:\n9: branches:\n10: - main\n11: - 'codex/**'\n12: - 'release/**'\n13: - 'feature/**'\n14: \n15: jobs:\n16: test:\n17: runs-on: ubuntu-latest\n18: steps:\n19: - uses: actions/checkout@v4\n20: - uses: actions/setup-node@v4\n21: with:\n22: node-version: 22\n23: - run: npm ci\n24: - run: npm run lint\n25: - run: npm run build\n26: - run: npm test\n27: ",
197
+ "name": "get_file_content"
198
+ },
199
+ {
200
+ "role": "assistant",
201
+ "content": null,
202
+ "tool_calls": [
203
+ {
204
+ "id": "call_l2cZAOGz6PoL9lmvqGjxXy0L",
205
+ "type": "function",
206
+ "function": {
207
+ "name": "compare_previous_release",
208
+ "arguments": "{\"previousTag\":\"v0.0.8\",\"currentRef\":\"HEAD\",\"statsOnly\":false}"
209
+ }
210
+ }
211
+ ]
212
+ },
213
+ {
214
+ "role": "tool",
215
+ "tool_call_id": "call_l2cZAOGz6PoL9lmvqGjxXy0L",
216
+ "content": "Comparison between v0.0.8 and HEAD:\n\nCommits: 5\n\nFile changes:\n .github/workflows/test.yml | 13 +-\n package-lock.json | 11756 +++++++++++++++++--------------------------\n package.json | 14 +-\n 3 files changed, 4605 insertions(+), 7178 deletions(-)\n\n\nCommit summary:\n04a4bec chore(deps): bump doccident and upgrade vitest toolchain\nbe1442f Removed pnpm from test workflow\n7a72659 chore(release): bump package version to 0.0.9\nd119d52 Updated the GitHub repository\n1fbe11d 0.0.9-dev.0\n",
217
+ "name": "compare_previous_release"
218
+ },
219
+ {
220
+ "role": "assistant",
221
+ "content": null,
222
+ "tool_calls": [
223
+ {
224
+ "id": "call_8XOOR4YIQ0BnnZaF8WGThQja",
225
+ "type": "function",
226
+ "function": {
227
+ "name": "search_codebase",
228
+ "arguments": "{\"query\":\"doccident\", \"fileTypes\":[\"ts\",\"js\",\"mjs\",\"cjs\"], \"contextLines\":2}"
229
+ }
230
+ }
231
+ ]
232
+ },
233
+ {
234
+ "role": "tool",
235
+ "tool_call_id": "call_8XOOR4YIQ0BnnZaF8WGThQja",
236
+ "content": ".doccident-setup.mjs-21- },\n.doccident-setup.mjs-22- transformCode: (code) => {\n.doccident-setup.mjs:23: // Transform TypeScript code to JavaScript for doccident documentation testing\n.doccident-setup.mjs-24- const transformedCode = transform(code, {\n.doccident-setup.mjs-25- filename: 'test.ts',\n",
237
+ "name": "search_codebase"
238
+ },
239
+ {
240
+ "role": "assistant",
241
+ "content": null,
242
+ "tool_calls": [
243
+ {
244
+ "id": "call_xTmMUCSrAOC24aK3iP052KAq",
245
+ "type": "function",
246
+ "function": {
247
+ "name": "get_file_content",
248
+ "arguments": "{\"filePath\":\".doccident-setup.mjs\",\"includeLineNumbers\":true}"
249
+ }
250
+ }
251
+ ]
252
+ },
253
+ {
254
+ "role": "tool",
255
+ "tool_call_id": "call_xTmMUCSrAOC24aK3iP052KAq",
256
+ "content": "1: /* eslint-disable no-console */\n2: import { transform } from '@babel/core';\n3: // eslint-disable-next-line import/extensions\n4: import * as Xenocline from './dist/xenocline.js';\n5: \n6: export default {\n7: \"globals\": {\n8: \"exports\": {\n9: \"Xenocline\": Xenocline\n10: },\n11: \"console\": {\n12: \"log\": console.log,\n13: \"error\": console.error,\n14: \"warn\": console.warn,\n15: \"info\": console.info,\n16: \"debug\": console.debug\n17: }\n18: },\n19: \"require\": {\n20: '@maxdrellin/xenocline': Xenocline\n21: },\n22: transformCode: (code) => {\n23: // Transform TypeScript code to JavaScript for doccident documentation testing\n24: const transformedCode = transform(code, {\n25: filename: 'test.ts',\n26: presets: ['@babel/preset-typescript'],\n27: plugins: [\n28: '@babel/plugin-transform-typescript',\n29: '@babel/plugin-transform-modules-commonjs'\n30: ],\n31: comments: true // Preserve comments\n32: })?.code;\n33: \n34: return transformedCode;\n35: }\n36: }\n37: ",
257
+ "name": "get_file_content"
258
+ },
259
+ {
260
+ "role": "assistant",
261
+ "content": null,
262
+ "tool_calls": [
263
+ {
264
+ "id": "call_S9m4773GAJfXnxNKuQsVvXTJ",
265
+ "type": "function",
266
+ "function": {
267
+ "name": "get_file_history",
268
+ "arguments": "{\"filePaths\":[\"package.json\",\".github/workflows/test.yml\"],\"limit\":20,\"format\":\"detailed\"}"
269
+ }
270
+ }
271
+ ]
272
+ },
273
+ {
274
+ "role": "tool",
275
+ "tool_call_id": "call_S9m4773GAJfXnxNKuQsVvXTJ",
276
+ "content": "04a4bec265d97966baa0a063e9e87c0b56297eb5\nTim O'Brien (tobrien@discursive.com)\nFri Jan 9 23:18:31 2026 -0800\nchore(deps): bump doccident and upgrade vitest toolchain\n\n- Update @doccident/doccident to ^0.0.7\n- Upgrade vitest and @vitest/coverage-v8 to ^4.0.16\n- Bump @types/node to ^25.0.5 and globals to ^17.0.0\n- Refresh package-lock.json to match updated dependency graph\n\n---\nbe1442fcebfd7e9c9b9cabc197f1865a3e664ae4\nTim O'Brien (tobrien@discursive.com)\nFri Jan 9 23:14:36 2026 -0800\nRemoved pnpm from test workflow\n\n\n---\n7a72659575cf236b8da2f9dc8564725b5bf14f40\nTim O'Brien (tobrien@discursive.com)\nFri Jan 9 23:05:39 2026 -0800\nchore(release): bump package version to 0.0.9\n\nRemove the `-dev.0` prerelease suffix in `package.json` (0.0.9-dev.0 -> 0.0.9) to mark the 0.0.9 release.\n\n---\nd119d52ecb603cc013043fb6423e704acc39e8a8\nTim O'Brien (tobrien@discursive.com)\nFri Jan 9 23:00:21 2026 -0800\nUpdated the GitHub repository\n\n\n---\n1fbe11d6adfc275e1a45aacb987cd03f8995f8fe\nTim O'Brien (tobrien@discursive.com)\nSat Dec 27 15:39:50 2025 -0800\n0.0.9-dev.0\n\n\n---\n6b9cc0397a481821cacf57e72e3635f9beeb3478\nTim O'Brien (tobrien@discursive.com)\nSat Dec 27 15:37:53 2025 -0800\nchore(release): bump package version to 0.0.8\n\n- Remove development prerelease tag from package.json version field (0.0.8-dev.0 -> 0.0.8) to mark a release-ready package version. (#86)\n\n* 0.0.8-dev.0\n\n* fix(execution): improve error handling, aggregator cleanup & implicit termination handling\n\n- Normalize and enrich error logging for Decision and Connection transform failures:\n - Include contextual messages and structured details (source node, connection id, original error).\n - Log with a stable tag and structured payload for easier debugging.\n- Make termination handlers awaitable (await termination.terminate(...)) to ensure async termination logic completes before dispatching events.\n- Treat an empty Connection[] from a Decision as an implicit termination:\n - Store result under a generated id \"<nodeId>_implicit_end\".\n - Emit a console.warn to make implicit terminations visible during execution.\n- On node execution errors, reject and clean up any pending aggregator deferreds for that node to avoid leaked unresolved promises.\n- After process completion, reject any remaining pending aggregators with a descriptive error and clear the map to prevent hanging executions.\n- Update related unit tests to assert the new logging structure, implicit termination ids, and aggregator rejection behavior.\n\n* Ignoring an agentic file\n\n* chore(release): bump package version to 0.0.8\n\n- Remove development prerelease tag from package.json version field (0.0.8-dev.0 -> 0.0.8) to mark a release-ready package version.\n---\n6d066d01978831ff1a6a62dcd2e7ff2462e510b2\nTim O'Brien (tobrien@discursive.com)\nSat Dec 27 09:28:02 2025 -0800\nchore(release): bump @maxdrellin/xenocline version to 0.0.7\n\n- Promote package version from 0.0.7-dev.0 to 0.0.7 to mark a non-dev release. (#85)\n\n* 0.0.7-dev.0\n\n* feat(test): migrate test suite from Jest to Vitest; update configs and tests\n\n- Replace Jest with Vitest as the test runner and coverage provider:\n - remove legacy jest.config.js\n - update package.json scripts and devDependencies (add vitest, @vitest/coverage-v8; remove jest, ts-jest, @types/jest, @jest/globals)\n - update vite.config to use vitest config and add test/coverage settings\n - update tsconfig types to include vitest/globals and exclude tests from compilation\n\n- Update test suite to use Vitest APIs:\n - replace jest imports/usages with vitest (vi) across tests\n - convert jest.mock/requireActual usage to vi.mock / vi.importActual where needed\n - replace jest.fn(), jest.clearAllMocks(), jest.spyOn(), jest.useFakeTimers()/setSystemTime()/useRealTimers() etc. with vi equivalents\n - update typed mock usages to be compatible with vi\n\n- Minor code/typing adjustments to support new test environment:\n - adjust src/utility/event/logginghandler.ts imports to correct relative paths (logger/context)\n - update tests included/excluded in tsconfig and Vite test include patterns\n\nThis migrates the repo's test infra from Jest to Vitest, updates tests to the new API, and corrects a relative import in the logging handler to align with project structure.\n\n* chore(release): bump @maxdrellin/xenocline version to 0.0.7\n\n- Promote package version from 0.0.7-dev.0 to 0.0.7 to mark a non-dev release.\n---\n42e0001676256808aaa362aeb45b1a50f71e3697\nTim O'Brien (tobrien@discursive.com)\nSat Dec 27 09:08:15 2025 -0800\nchore(release): bump package version to 0.0.6\n\n- Update package.json version from 0.0.6-dev.0 to 0.0.6 to mark a non-dev release.\n- Normalize package.json formatting/indentation (switch to 2-space JSON formatting). (#82)\n\n* chore(repo): migrate from pnpm to npm in scripts & CI; add pre-commit hook to block file: deps\n\n* 0.0.6-dev.0\n\n* chore(release): bump package version to 0.0.6\n\n- Update package.json version from 0.0.6-dev.0 to 0.0.6 to mark a non-dev release.\n- Normalize package.json formatting/indentation (switch to 2-space JSON formatting).\n---\ne16147b2fd11e57a089fdd5b37bedb9328a7e242\nTim O'Brien (tobrien@discursive.com)\nThu Jul 10 08:25:31 2025 -0700\n0.0.5\n\n (#35)\n\n* Removed redundant config and context files related to KodrDriv and doccident, pruned local documentation and mock/test support files from npm distribution, and updated development dependencies for consistency.\n\n- Deleted `.kodrdriv/config.yaml` and `.kodrdriv/context/content.md` no longer needed for build or runtime.\n- Updated `.npmignore` to exclude configuration, documentation, mocks, and development scaffolding from published packages.\n- Incremented several devDependencies in `package.json` for Babel, ESLint, Jest, SWC, TypeScript, and related plugins to match upstream updates.\n- Minor cleanup to `.doccident-setup.mjs`; fixed comment typo and formatting.\n- Bumped project `packageManager` version (pnpm 10.13.1).\n\nThis keeps the project package lean in distribution, ensures dev tooling is current, and prevents shipping internal scaffolding or local settings in published artifacts.\n\n* No changes detected; commit aborted.\n\n* 0.0.5\n---\n7f87eca9d72f34c9bcefa0ae8e740304989474fd\nTim O'Brien (tobrien@discursive.com)\nWed May 28 16:46:32 2025 -0700\nRelease/0.0.4 (#6)\n\n* Configured CJS and EDM\n\n* 0.0.4\n---\naa88b09401a9759523c5d682bf6122ba32aeb92e\nTim O'Brien (tobrien@discursive.com)\nTue May 27 07:53:14 2025 -0700\nRelease/0.0.3 (#5)\n\n* Refactored execution logic to isolate phase handling and improve test coverage. Introduced `executePhase` function to encapsulate phase execution with support for preparation and verification steps, enhancing the modularity of node execution.\n\n**Details:**\n- Created `executePhase` in `src/execution/phase.ts` to manage phase execution, including preparation and verification.\n- Updated `executeNode` in `src/execution/node.ts` to leverage `executePhase`.\n- Enhanced `PhaseNode` interface to include `PrepareMethod` and `ProcessMethod` types for improved type safety.\n- Added unit tests in `tests/node/phase.test.ts` to ensure robust validation of phase execution, covering scenarios with and without prepare and verify steps.\n\nThese changes streamline the execution process while maintaining backward compatibility, setting the stage for future expansions in the phase execution logic.\n\n* **Enhanced Type Safety in `PhaseNode` and Logging Tests**\n\nUpdated `PhaseNodeOptions` to accept an `Input` type, reinforcing type safety for phase nodes. Adjusted tests to reflect these changes, ensuring consistency with the `PrepareMethod` and `ProcessMethod` interfaces.\n\n- Updated `PhaseNodeOptions` in `src/node/phasenode.ts` to include an `Input` type parameter, providing improved flexibility and type safety.\n- Enhanced `createPhaseNode` to support the modified type structure.\n- Added comprehensive test cases in `tests/logger.test.ts`, testing logging behaviors and error scenarios.\n- Introduced `tests/utility/event/logginghandler.test.ts` to validate logging handler operations, including custom logging functions and context-based logger wrapping.\n\nThese enhancements aim to increase robustness in type handling and logging functionalities, supporting future developments in phase management and logging.\n\n* ### Refactored Phase Node Execution Stages for Improved Event Handling\n\nExtended `PhaseNodeEventStage` to include 'prepared' and 'processed' stages, enhancing event granularity for phase nodes. This refactor improves the observability of the node lifecycle by detailing intermediate execution stages, which supports complex workflows.\n\n- **Updated Types:** Expanded `PhaseNodeEventStage` type in `src/event/node.ts` to cover 'prepared' and 'processed' events.\n- **Execution Logic:** Modified `executeNode` in `src/execution/node.ts` to dispatch 'prepared' and 'processed' events, aligning them with corresponding lifecycle steps.\n- **Testing Adjustments:** Removed redundant tests in `tests/execution/process.test.ts` and `tests/node/phase.test.ts`, cleaning up execution path verification as the logic is now streamlined.\n\nThese updates contribute to more transparent and testable phase execution, facilitating debugging and future enhancements.\n\n* ### Added Verification Support to Phase Execution\n\nIntegrated a verification step into the phase execution process, enabling pre-execution validation of input data. The newly introduced `verify` method option within `Phase` allows phases to assert input correctness before proceeding with their core logic.\n\n- **Core Change:** Modified `PhaseOptions` to include an optional `verify` method. Updated `createPhase` to use this method if available, ensuring execution only proceeds upon successful input verification.\n- **Testing Enhancements:** Added a comprehensive test suite in `phase.test.ts` to ensure correct invocation of the `verify` method. Tests cover scenarios where the verification passes, fails, or is omitted.\n\nThese updates improve robustness by ensuring that phases can validate their prerequisites, and mitigate potential errors early in the process.\n\n* Renamed `.markdown-doctest-setup.mjs` to `.doccident-setup.mjs` and adjusted the import for Xenocline to lowercase in `.doccident-setup.mjs` to maintain consistent filename casing. Updated `package.json` to include `test:readme` in the `test` script, ensuring README checks are part of the testing workflow. These changes improve consistency and expand test coverage to include documentation validation.\n\n* 0.0.3\n\n* ### Updated Development Dependencies and Cleaned Up Vite Configuration\n\nUpgraded several development dependencies in `package.json` to address potential bugs and ensure compatibility with the latest tools. Changes include updates to `@babel/core`, `@swc/core`, `@types/node`, and `globals`. These updates help maintain the stability and security of the development environment.\n\nIn addition, removed unused plugins from `vite.config.ts` to streamline configuration and reduce build complexity:\n- Deleted `rollup-plugin-preserve-shebang` as it's no longer necessary for the current build requirements.\n\nThese adjustments enhance both dependency management and configuration clarity, facilitating smoother development and build processes.\n---\ne95bf4a68def44fbd0ba2f053749902f31260bbc\nTim O'Brien (tobrien@discursive.com)\nSat May 24 10:51:59 2025 -0700\n0.0.2\n\n\n---\n39cd4d992c1e9c98e4dbfe1ef5810e1b7a4ad1bc\nTim O'Brien (tobrien@discursive.com)\nSat May 24 10:37:24 2025 -0700\nInappropriate casing on the line to main from package\n\n\n---\n782b2f6eaac4e22f2ab4194685e925e878097c18\nTim O'Brien (tobrien@discursive.com)\nSat May 24 10:06:21 2025 -0700\nFixed the version\n\n\n---\nae4732e68931f19186f76c89ac034e5874074b41\nTim O'Brien (tobrien@discursive.com)\nSat May 24 10:05:26 2025 -0700\nInitial Commit\n\n\n---\n",
277
+ "name": "get_file_history"
278
+ },
279
+ {
280
+ "role": "assistant",
281
+ "content": null,
282
+ "tool_calls": [
283
+ {
284
+ "id": "call_Ss1JlkTje4kpRkSKBh5VEGLu",
285
+ "type": "function",
286
+ "function": {
287
+ "name": "get_file_history",
288
+ "arguments": "{\"filePaths\":[\"package-lock.json\"],\"limit\":30,\"format\":\"summary\"}"
289
+ }
290
+ }
291
+ ]
292
+ },
293
+ {
294
+ "role": "tool",
295
+ "tool_call_id": "call_Ss1JlkTje4kpRkSKBh5VEGLu",
296
+ "content": "04a4bec - chore(deps): bump doccident and upgrade vitest toolchain (Tim O'Brien, 2 minutes ago)\n1fbe11d - 0.0.9-dev.0 (Tim O'Brien, 13 days ago)\n6b9cc03 - chore(release): bump package version to 0.0.8 (Tim O'Brien, 13 days ago)\n6d066d0 - chore(release): bump @maxdrellin/xenocline version to 0.0.7 (Tim O'Brien, 2 weeks ago)\n42e0001 - chore(release): bump package version to 0.0.6 (Tim O'Brien, 2 weeks ago)\n",
297
+ "name": "get_file_history"
298
+ },
299
+ {
300
+ "role": "assistant",
301
+ "content": null,
302
+ "tool_calls": [
303
+ {
304
+ "id": "call_EV6TQBBMirPF10LlPpYA7HFU",
305
+ "type": "function",
306
+ "function": {
307
+ "name": "search_codebase",
308
+ "arguments": "{\"query\":\"codecov\", \"contextLines\":2}"
309
+ }
310
+ }
311
+ ]
312
+ },
313
+ {
314
+ "role": "tool",
315
+ "tool_call_id": "call_EV6TQBBMirPF10LlPpYA7HFU",
316
+ "content": "Tool execution failed: Tool \"search_codebase\" execution failed: Search failed: Command failed: git grep -n -C 2 \"codecov\"\n",
317
+ "name": "search_codebase"
318
+ },
319
+ {
320
+ "role": "assistant",
321
+ "content": null,
322
+ "tool_calls": [
323
+ {
324
+ "id": "call_CMzg7jcA5oy7zyMTJbUkaO6A",
325
+ "type": "function",
326
+ "function": {
327
+ "name": "search_codebase",
328
+ "arguments": "{\"query\":\"pnpm\",\"contextLines\":2}"
329
+ }
330
+ }
331
+ ]
332
+ },
333
+ {
334
+ "role": "tool",
335
+ "tool_call_id": "call_CMzg7jcA5oy7zyMTJbUkaO6A",
336
+ "content": ".gitignore-14-input/\n.gitignore-15-.Xenocline/\n.gitignore:16:pnpm-workspace.yaml\n.gitignore-17-processed/.DS_Store\n.gitignore-18-output/\n--\n.npmignore-24-node_modules/\n.npmignore-25-nodemon.json\n.npmignore:26:pnpm-lock.yaml\n.npmignore-27-src/\n.npmignore-28-tests/\n",
337
+ "name": "search_codebase"
338
+ },
339
+ {
340
+ "role": "assistant",
341
+ "content": "RELEASE_NOTES:\n{\n \"title\": \"v0.0.9 — Toolchain refresh (Vitest v4), doccident update, and npm-based CI\",\n \"body\": \"## Summary\\nThis release is primarily a maintenance/tooling update. There are **no changes to Xenocline’s runtime/library code or public API** in this diff; updates are focused on dependencies and CI.\\n\\n## What changed\\n### Dependency + toolchain updates\\n- Updated **@doccident/doccident** from `^0.0.1` → `^0.0.7` (used by `npm run test:readme`).\\n- Upgraded the test toolchain:\\n - **vitest** `^2.1.8` → `^4.0.16`\\n - **@vitest/coverage-v8** `^2.1.8` → `^4.0.16`\\n- Updated dev environment types/config:\\n - **@types/node** `^24.0.12` → `^25.0.5`\\n - **globals** `^16.3.0` → `^17.0.0`\\n- Regenerated **package-lock.json** to match the updated dependency graph.\\n\\n### CI workflow simplified (pnpm removed)\\n`.github/workflows/test.yml` now runs using npm only:\\n- Uses `npm ci` (no `pnpm/action-setup`, no `pnpm install`).\\n- Runs `npm run lint`, `npm run build`, and `npm test`.\\n- The workflow no longer uploads coverage to Codecov (the `codecov/codecov-action` step was removed).\\n\\n### Package metadata\\n- Version bumped to **0.0.9**.\\n- `repository.url` updated to `git+https://github.com/girverket/xenocline.git`.\\n\\n## Impact\\n### For users (library consumers)\\n- No functional or API changes in the Xenocline library are included here.\\n- Installing this package will pull a newer **@doccident/doccident** version (it is currently listed under `dependencies`, not `devDependencies`).\\n\\n### For contributors / maintainers\\n- CI is now aligned with the presence of **package-lock.json** and expects **npm-based installs**.\\n- If you relied on CI coverage upload, note that **Codecov reporting is no longer part of the GitHub Actions workflow**.\\n- Vitest has a major-version bump (2 → 4). If you maintain custom Vitest configuration or plugins locally, you may need adjustments—even though this repo’s scripts continue to run via `vitest run --coverage`.\\n\\n## Breaking changes\\n- **No breaking API changes detected**.\\n- Operational note: **coverage is no longer uploaded to Codecov in CI** (pipeline/reporting change, not a runtime breaking change).\"\n}"
342
+ }
343
+ ]
344
+ ```
345
+
346
+ </details>
347
+
348
+ ## Generated Release Notes
349
+
350
+ ### Title
351
+ ```
352
+ v0.0.9 — Toolchain refresh (Vitest v4), doccident update, and npm-based CI
353
+ ```
354
+
355
+ ### Body
356
+ ```markdown
357
+ ## Summary
358
+ This release is primarily a maintenance/tooling update. There are **no changes to Xenocline’s runtime/library code or public API** in this diff; updates are focused on dependencies and CI.
359
+
360
+ ## What changed
361
+ ### Dependency + toolchain updates
362
+ - Updated **@doccident/doccident** from `^0.0.1` → `^0.0.7` (used by `npm run test:readme`).
363
+ - Upgraded the test toolchain:
364
+ - **vitest** `^2.1.8` → `^4.0.16`
365
+ - **@vitest/coverage-v8** `^2.1.8` → `^4.0.16`
366
+ - Updated dev environment types/config:
367
+ - **@types/node** `^24.0.12` → `^25.0.5`
368
+ - **globals** `^16.3.0` → `^17.0.0`
369
+ - Regenerated **package-lock.json** to match the updated dependency graph.
370
+
371
+ ### CI workflow simplified (pnpm removed)
372
+ `.github/workflows/test.yml` now runs using npm only:
373
+ - Uses `npm ci` (no `pnpm/action-setup`, no `pnpm install`).
374
+ - Runs `npm run lint`, `npm run build`, and `npm test`.
375
+ - The workflow no longer uploads coverage to Codecov (the `codecov/codecov-action` step was removed).
376
+
377
+ ### Package metadata
378
+ - Version bumped to **0.0.9**.
379
+ - `repository.url` updated to `git+https://github.com/girverket/xenocline.git`.
380
+
381
+ ## Impact
382
+ ### For users (library consumers)
383
+ - No functional or API changes in the Xenocline library are included here.
384
+ - Installing this package will pull a newer **@doccident/doccident** version (it is currently listed under `dependencies`, not `devDependencies`).
385
+
386
+ ### For contributors / maintainers
387
+ - CI is now aligned with the presence of **package-lock.json** and expects **npm-based installs**.
388
+ - If you relied on CI coverage upload, note that **Codecov reporting is no longer part of the GitHub Actions workflow**.
389
+ - Vitest has a major-version bump (2 → 4). If you maintain custom Vitest configuration or plugins locally, you may need adjustments—even though this repo’s scripts continue to run via `vitest run --coverage`.
390
+
391
+ ## Breaking changes
392
+ - **No breaking API changes detected**.
393
+ - Operational note: **coverage is no longer uploaded to Codecov in CI** (pipeline/reporting change, not a runtime breaking change).
394
+ ```
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@girverket/xenocline",
3
+ "version": "0.0.9",
4
+ "description": "Xenocline provides a streamlined, modular framework to manage and execute Processor Pipelines—sequences of computational steps or tasks executed systematically to process data or events. It allows developers to define, connect, and orchestrate individual processors into efficient workflows, supporting clear separation of concerns, scalability, and ease of maintenance.",
5
+ "main": "dist/xenocline.cjs",
6
+ "module": "dist/xenocline.js",
7
+ "type": "module",
8
+ "bin": {
9
+ "xenocline": "./dist/xenocline.cjs"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/girverket/xenocline.git"
14
+ },
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/xenocline.d.ts",
18
+ "import": "./dist/xenocline.js",
19
+ "require": "./dist/xenocline.cjs"
20
+ }
21
+ },
22
+ "scripts": {
23
+ "build": "npm run lint && tsc --noEmit && vite build && copyfiles -u 1 \"src/**/*.md\" dist && copyfiles -u 1 \"src/**/*.yaml\" dist",
24
+ "start": "node dist/xenocline.cjs",
25
+ "dev": "vite",
26
+ "watch": "vite build --watch",
27
+ "test": "npm run test:coverage && npm run test:readme",
28
+ "test:coverage": "vitest run --coverage",
29
+ "test:readme": "doccident -c .doccident-setup.mjs README.md",
30
+ "lint": "eslint . --ext .ts",
31
+ "lint:fix": "eslint . --ext .ts --fix",
32
+ "clean": "rm -rf dist",
33
+ "precommit": "npm run build && npm run lint && npm run test",
34
+ "prepublishOnly": "npm run lint && npm run build && npm run test"
35
+ },
36
+ "keywords": [
37
+ "pipeline",
38
+ "execution",
39
+ "workflow"
40
+ ],
41
+ "author": "Max Drellin <maxdrellin@yahoo.com>",
42
+ "license": "Apache-2.0",
43
+ "dependencies": {
44
+ "@doccident/doccident": "^0.0.7"
45
+ },
46
+ "devDependencies": {
47
+ "@babel/core": "^7.28.0",
48
+ "@babel/plugin-transform-modules-commonjs": "^7.27.1",
49
+ "@babel/plugin-transform-typescript": "^7.28.0",
50
+ "@babel/preset-typescript": "^7.27.1",
51
+ "@eslint/eslintrc": "^3.3.1",
52
+ "@eslint/js": "^9.30.1",
53
+ "@rollup/plugin-replace": "^6.0.2",
54
+ "@swc/core": "^1.12.11",
55
+ "@types/node": "^25.0.5",
56
+ "@typescript-eslint/eslint-plugin": "^8.36.0",
57
+ "@typescript-eslint/parser": "^8.36.0",
58
+ "@vitest/coverage-v8": "^4.0.16",
59
+ "copyfiles": "^2.4.1",
60
+ "eslint": "^9.30.1",
61
+ "eslint-plugin-import": "^2.32.0",
62
+ "globals": "^17.0.0",
63
+ "typescript": "^5.8.3",
64
+ "vite": "^7.0.4",
65
+ "vite-plugin-dts": "^4.5.4",
66
+ "vite-plugin-node": "^7.0.0",
67
+ "vitest": "^4.0.16"
68
+ }
69
+ }
@@ -0,0 +1,53 @@
1
+ #!/bin/bash
2
+
3
+ # Xenocline Pre-commit Hook
4
+ # Prevents committing package.json files that contain file: dependencies
5
+ #
6
+ # To install this hook:
7
+ # 1. Copy this file to .git/hooks/pre-commit
8
+ # 2. Make it executable: chmod +x .git/hooks/pre-commit
9
+ #
10
+ # Or run: npm run install-hooks (if you add this script to package.json)
11
+
12
+ echo "🔍 Checking for file: dependencies in staged package.json files..."
13
+
14
+ # Find all staged package.json files
15
+ staged_package_files=$(git diff --cached --name-only | grep "package\.json$")
16
+
17
+ if [ -z "$staged_package_files" ]; then
18
+ echo "✅ No package.json files staged for commit"
19
+ exit 0
20
+ fi
21
+
22
+ found_file_deps=false
23
+
24
+ # Check each staged package.json file for file: dependencies
25
+ for file in $staged_package_files; do
26
+ if [ -f "$file" ]; then
27
+ # Look for "file:" dependencies in the staged version
28
+ if git show :$file | grep -q '"file:'; then
29
+ echo "❌ Found file: dependencies in $file:"
30
+ git show :$file | grep '"file:' | sed 's/^/ /'
31
+ found_file_deps=true
32
+ fi
33
+ fi
34
+ done
35
+
36
+ if $found_file_deps; then
37
+ echo ""
38
+ echo "🚫 COMMIT BLOCKED: Cannot commit package.json files with file: dependencies"
39
+ echo ""
40
+ echo "💡 To fix this:"
41
+ echo " 1. Remove file: dependencies from package.json"
42
+ echo " 2. Commit your changes"
43
+ echo ""
44
+ echo " Or to commit anyway (not recommended):"
45
+ echo " git commit --no-verify"
46
+ echo ""
47
+ exit 1
48
+ fi
49
+
50
+ echo "✅ No file: dependencies found in staged package.json files"
51
+ exit 0
52
+
53
+