groundswell 0.0.2 → 1.0.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/LICENSE +21 -0
- package/README.md +26 -9
- package/dist/cache/cache-key.d.ts +86 -0
- package/dist/cache/cache-key.d.ts.map +1 -0
- package/dist/cache/cache-key.js +204 -0
- package/dist/cache/cache-key.js.map +1 -0
- package/dist/cache/cache.d.ts +104 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +179 -0
- package/dist/cache/cache.js.map +1 -0
- package/{src/cache/index.ts → dist/cache/index.d.ts} +1 -1
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +6 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/core/agent.d.ts +203 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +833 -0
- package/dist/core/agent.js.map +1 -0
- package/{src/core/context.ts → dist/core/context.d.ts} +16 -67
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +80 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/event-tree.d.ts +72 -0
- package/dist/core/event-tree.d.ts.map +1 -0
- package/dist/core/event-tree.js +211 -0
- package/dist/core/event-tree.js.map +1 -0
- package/{src/core/factory.ts → dist/core/factory.d.ts} +6 -27
- package/dist/core/factory.d.ts.map +1 -0
- package/dist/core/factory.js +110 -0
- package/dist/core/factory.js.map +1 -0
- package/{src/core/index.ts → dist/core/index.d.ts} +2 -10
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +50 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +91 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mcp-handler.d.ts +127 -0
- package/dist/core/mcp-handler.d.ts.map +1 -0
- package/dist/core/mcp-handler.js +323 -0
- package/dist/core/mcp-handler.js.map +1 -0
- package/dist/core/prompt.d.ts +80 -0
- package/dist/core/prompt.d.ts.map +1 -0
- package/dist/core/prompt.js +120 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/workflow-context.d.ts +61 -0
- package/dist/core/workflow-context.d.ts.map +1 -0
- package/dist/core/workflow-context.js +358 -0
- package/dist/core/workflow-context.js.map +1 -0
- package/dist/core/workflow.d.ts +543 -0
- package/dist/core/workflow.d.ts.map +1 -0
- package/dist/core/workflow.js +986 -0
- package/dist/core/workflow.js.map +1 -0
- package/dist/debugger/event-replayer.d.ts +422 -0
- package/dist/debugger/event-replayer.d.ts.map +1 -0
- package/dist/debugger/event-replayer.js +639 -0
- package/dist/debugger/event-replayer.js.map +1 -0
- package/dist/debugger/index.d.ts +2 -0
- package/dist/debugger/index.d.ts.map +1 -0
- package/{src/debugger/index.ts → dist/debugger/index.js} +1 -0
- package/dist/debugger/index.js.map +1 -0
- package/dist/debugger/tree-debugger.d.ts +240 -0
- package/dist/debugger/tree-debugger.d.ts.map +1 -0
- package/dist/debugger/tree-debugger.js +620 -0
- package/dist/debugger/tree-debugger.js.map +1 -0
- package/dist/decorators/index.d.ts +4 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/{src/decorators/index.ts → dist/decorators/index.js} +1 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/observed-state.d.ts +32 -0
- package/dist/decorators/observed-state.d.ts.map +1 -0
- package/dist/decorators/observed-state.js +79 -0
- package/dist/decorators/observed-state.js.map +1 -0
- package/dist/decorators/step.d.ts +15 -0
- package/dist/decorators/step.d.ts.map +1 -0
- package/dist/decorators/step.js +192 -0
- package/dist/decorators/step.js.map +1 -0
- package/dist/decorators/task.d.ts +50 -0
- package/dist/decorators/task.d.ts.map +1 -0
- package/dist/decorators/task.js +118 -0
- package/dist/decorators/task.js.map +1 -0
- package/dist/examples/index.d.ts +3 -0
- package/dist/examples/index.d.ts.map +1 -0
- package/{src/examples/index.ts → dist/examples/index.js} +1 -0
- package/dist/examples/index.js.map +1 -0
- package/dist/examples/tdd-orchestrator.d.ts +15 -0
- package/dist/examples/tdd-orchestrator.d.ts.map +1 -0
- package/dist/examples/tdd-orchestrator.js +121 -0
- package/dist/examples/tdd-orchestrator.js.map +1 -0
- package/dist/examples/test-cycle-workflow.d.ts +14 -0
- package/dist/examples/test-cycle-workflow.d.ts.map +1 -0
- package/dist/examples/test-cycle-workflow.js +116 -0
- package/dist/examples/test-cycle-workflow.js.map +1 -0
- package/dist/harnesses/claude-code-harness.d.ts +391 -0
- package/dist/harnesses/claude-code-harness.d.ts.map +1 -0
- package/dist/harnesses/claude-code-harness.js +1076 -0
- package/dist/harnesses/claude-code-harness.js.map +1 -0
- package/dist/harnesses/harness-registry.d.ts +440 -0
- package/dist/harnesses/harness-registry.d.ts.map +1 -0
- package/dist/harnesses/harness-registry.js +543 -0
- package/dist/harnesses/harness-registry.js.map +1 -0
- package/dist/harnesses/index.d.ts +12 -0
- package/dist/harnesses/index.d.ts.map +1 -0
- package/dist/harnesses/index.js +11 -0
- package/dist/harnesses/index.js.map +1 -0
- package/dist/harnesses/pi-harness.d.ts +219 -0
- package/dist/harnesses/pi-harness.d.ts.map +1 -0
- package/dist/harnesses/pi-harness.js +676 -0
- package/dist/harnesses/pi-harness.js.map +1 -0
- package/dist/harnesses/pi-schema-converter.d.ts +24 -0
- package/dist/harnesses/pi-schema-converter.d.ts.map +1 -0
- package/dist/harnesses/pi-schema-converter.js +81 -0
- package/dist/harnesses/pi-schema-converter.js.map +1 -0
- package/dist/harnesses/register-defaults.d.ts +24 -0
- package/dist/harnesses/register-defaults.d.ts.map +1 -0
- package/dist/harnesses/register-defaults.js +40 -0
- package/dist/harnesses/register-defaults.js.map +1 -0
- package/dist/harnesses/session-store.d.ts +201 -0
- package/dist/harnesses/session-store.d.ts.map +1 -0
- package/dist/harnesses/session-store.js +254 -0
- package/dist/harnesses/session-store.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/reflection/index.d.ts +5 -0
- package/dist/reflection/index.d.ts.map +1 -0
- package/{src/reflection/index.ts → dist/reflection/index.js} +1 -1
- package/dist/reflection/index.js.map +1 -0
- package/dist/reflection/reflection.d.ts +84 -0
- package/dist/reflection/reflection.d.ts.map +1 -0
- package/dist/reflection/reflection.js +344 -0
- package/dist/reflection/reflection.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/introspection.d.ts +165 -0
- package/dist/tools/introspection.d.ts.map +1 -0
- package/dist/tools/introspection.js +324 -0
- package/dist/tools/introspection.js.map +1 -0
- package/dist/types/agent.d.ts +1317 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +423 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/decorators.d.ts +40 -0
- package/dist/types/decorators.d.ts.map +1 -0
- package/dist/types/decorators.js +2 -0
- package/dist/types/decorators.js.map +1 -0
- package/dist/types/error-strategy.d.ts +13 -0
- package/dist/types/error-strategy.d.ts.map +1 -0
- package/dist/types/error-strategy.js +2 -0
- package/dist/types/error-strategy.js.map +1 -0
- package/dist/types/error.d.ts +20 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +2 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/events.d.ts +113 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +2 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/harnesses.d.ts +474 -0
- package/dist/types/harnesses.d.ts.map +1 -0
- package/dist/types/harnesses.js +2 -0
- package/dist/types/harnesses.js.map +1 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/logging.d.ts +24 -0
- package/dist/types/logging.d.ts.map +1 -0
- package/dist/types/logging.js +2 -0
- package/dist/types/logging.js.map +1 -0
- package/dist/types/observer.d.ts +18 -0
- package/dist/types/observer.d.ts.map +1 -0
- package/dist/types/observer.js +2 -0
- package/dist/types/observer.js.map +1 -0
- package/dist/types/prompt.d.ts +31 -0
- package/dist/types/prompt.d.ts.map +1 -0
- package/dist/types/prompt.js +6 -0
- package/dist/types/prompt.js.map +1 -0
- package/dist/types/providers.d.ts +691 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/providers.js +14 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/types/reflection.d.ts +96 -0
- package/dist/types/reflection.d.ts.map +1 -0
- package/dist/types/reflection.js +24 -0
- package/dist/types/reflection.js.map +1 -0
- package/dist/types/restart.d.ts +132 -0
- package/dist/types/restart.d.ts.map +1 -0
- package/dist/types/restart.js +2 -0
- package/dist/types/restart.js.map +1 -0
- package/dist/types/sdk-primitives.d.ts +118 -0
- package/dist/types/sdk-primitives.d.ts.map +1 -0
- package/dist/types/sdk-primitives.js +6 -0
- package/dist/types/sdk-primitives.js.map +1 -0
- package/{src/types/snapshot.ts → dist/types/snapshot.d.ts} +5 -5
- package/dist/types/snapshot.d.ts.map +1 -0
- package/dist/types/snapshot.js +2 -0
- package/dist/types/snapshot.js.map +1 -0
- package/dist/types/streaming.d.ts +194 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/streaming.js +67 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/workflow-context.d.ts +275 -0
- package/dist/types/workflow-context.d.ts.map +1 -0
- package/dist/types/workflow-context.js +8 -0
- package/dist/types/workflow-context.js.map +1 -0
- package/dist/types/workflow.d.ts +30 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +2 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/agent-validation.d.ts +88 -0
- package/dist/utils/agent-validation.d.ts.map +1 -0
- package/dist/utils/agent-validation.js +87 -0
- package/dist/utils/agent-validation.js.map +1 -0
- package/dist/utils/delay.d.ts +7 -0
- package/dist/utils/delay.d.ts.map +1 -0
- package/dist/utils/delay.js +9 -0
- package/dist/utils/delay.js.map +1 -0
- package/dist/utils/harness-config.d.ts +180 -0
- package/dist/utils/harness-config.d.ts.map +1 -0
- package/dist/utils/harness-config.js +311 -0
- package/dist/utils/harness-config.js.map +1 -0
- package/dist/utils/id.d.ts +6 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +12 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/model-spec.d.ts +110 -0
- package/dist/utils/model-spec.d.ts.map +1 -0
- package/dist/utils/model-spec.js +149 -0
- package/dist/utils/model-spec.js.map +1 -0
- package/dist/utils/observable.d.ts +54 -0
- package/dist/utils/observable.d.ts.map +1 -0
- package/dist/utils/observable.js +82 -0
- package/dist/utils/observable.js.map +1 -0
- package/dist/utils/provider-config.d.ts +10 -0
- package/dist/utils/provider-config.d.ts.map +1 -0
- package/dist/utils/provider-config.js +10 -0
- package/dist/utils/provider-config.js.map +1 -0
- package/dist/utils/restart-analysis.d.ts +202 -0
- package/dist/utils/restart-analysis.d.ts.map +1 -0
- package/dist/utils/restart-analysis.js +426 -0
- package/dist/utils/restart-analysis.js.map +1 -0
- package/dist/utils/session-serialization.d.ts +118 -0
- package/dist/utils/session-serialization.d.ts.map +1 -0
- package/dist/utils/session-serialization.js +217 -0
- package/dist/utils/session-serialization.js.map +1 -0
- package/dist/utils/workflow-error-utils.d.ts +22 -0
- package/dist/utils/workflow-error-utils.d.ts.map +1 -0
- package/dist/utils/workflow-error-utils.js +45 -0
- package/dist/utils/workflow-error-utils.js.map +1 -0
- package/package.json +34 -5
- package/.claude/commands/subtask-planning/prp-base-create.md +0 -120
- package/.claude/commands/subtask-planning/prp-base-execute.md +0 -65
- package/.claude/commands/task-breakdown.md +0 -94
- package/.claude/settings.local.json +0 -9
- package/.claude/system_prompts/task-breakdown.md +0 -101
- package/CHANGELOG.md +0 -188
- package/PRD.md +0 -543
- package/PRPs/001-hierarchical-workflow-engine.md +0 -2438
- package/PRPs/PRDs/002-agent-prompt.md +0 -390
- package/PRPs/PRDs/003-agent-prompt.md +0 -943
- package/PRPs/PRDs/004-agent-prompt.md +0 -1136
- package/PRPs/PRDs/tasks-001.json +0 -492
- package/PRPs/README.md +0 -83
- package/PRPs/templates/prp_base.md +0 -222
- package/docs/agent.md +0 -422
- package/docs/prompt.md +0 -419
- package/docs/workflow.md +0 -600
- package/examples/README.md +0 -258
- package/examples/examples/01-basic-workflow.ts +0 -100
- package/examples/examples/02-decorator-options.ts +0 -217
- package/examples/examples/03-parent-child.ts +0 -241
- package/examples/examples/04-observers-debugger.ts +0 -340
- package/examples/examples/05-error-handling.ts +0 -387
- package/examples/examples/06-concurrent-tasks.ts +0 -352
- package/examples/examples/07-agent-loops.ts +0 -432
- package/examples/examples/08-sdk-features.ts +0 -667
- package/examples/examples/09-reflection.ts +0 -573
- package/examples/examples/10-introspection.ts +0 -550
- package/examples/examples/11-reparenting-workflows.ts +0 -269
- package/examples/index.ts +0 -147
- package/examples/utils/helpers.ts +0 -57
- package/package-lock.json +0 -2398
- package/plan/001_d3bb02af4886/TEST_RESULTS.md +0 -259
- package/plan/001_d3bb02af4886/backlog.json +0 -867
- package/plan/001_d3bb02af4886/bug_fix_tasks.json +0 -484
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S1/PRP.md +0 -488
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S2/PRP.md +0 -581
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M1T1S3/PRP.md +0 -687
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S1/PRP.md +0 -492
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/PRP.md +0 -932
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/concurrent_error_testing_patterns.md +0 -1109
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/vitest_concurrent_testing.md +0 -802
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T1S3/research/workflow_engine_test_references.md +0 -603
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S1/PRP.md +0 -564
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S3/PRP.md +0 -518
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T2S4/PRP.md +0 -1252
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/PRP.md +0 -364
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/CODEBASE_INVENTORY.md +0 -114
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/DECORATOR_DOCUMENTATION_PATTERNS.md +0 -205
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/PRD_LOCATION_ANALYSIS.md +0 -199
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M2T3S1/research/ULTRATHINK_PRP_PLAN.md +0 -134
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/PRP.md +0 -495
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S1/research/console_error_inventory.md +0 -435
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S2/PRP.md +0 -506
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T1S3/PRP.md +0 -612
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/PRP.md +0 -558
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T2S2/research/external_research.md +0 -788
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S2/PRP.md +0 -460
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T3S3/PRP.md +0 -454
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/PRP.md +0 -520
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/RECOMMENDATION.md +0 -417
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/external_workflow_engines_research.md +0 -760
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S1/research/security_implications_analysis.md +0 -245
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M3T4S2/PRP.md +0 -792
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/PRP.md +0 -535
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S1/TEST_EXECUTION_REPORT.md +0 -190
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/PRP.md +0 -654
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/TEST_FIX_REPORT.md +0 -227
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/KEY_FINDINGS.md +0 -345
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/QUICK_REFERENCE.md +0 -193
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T1S2/research/test_maintenance_research.md +0 -1323
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/BREAKING_CHANGES_AUDIT.md +0 -1011
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S1/PRP.md +0 -927
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/P1M4T3S2/PRP.md +0 -505
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/architecture/logger_child_signature_analysis.md +0 -401
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/child_implementation_research.md +0 -142
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/test_patterns_research.md +0 -112
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S3/vitest_patterns_research.md +0 -159
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/PRP.md +0 -549
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/VERIFICATION_REPORT.md +0 -368
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/edge_case_analysis.md +0 -172
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M1T1S4/usage_inventory.md +0 -175
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S2/PRP.md +0 -696
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T1S4/PRP.md +0 -860
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/PRP.md +0 -1066
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01-testing-aggregated-errors.md +0 -1103
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/01_typescript_error_aggregation_patterns.md +0 -789
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02-error-merge-strategy-testing-guide.md +0 -1098
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/02_aggregate_error_patterns.md +0 -1037
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03-promise-allsettled-testing-patterns.md +0 -916
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/03_error_merging_strategies.md +0 -1045
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/04_github_stackoverflow_examples.md +0 -890
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/05_comprehensive_summary.md +0 -822
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/INDEX.md +0 -668
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/QUICK_REFERENCE.md +0 -706
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/README.md +0 -265
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S2/research/RESEARCH_REPORT.md +0 -655
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T2S4/research/vitest_testing_patterns.md +0 -1103
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M2T3S2/PRP.md +0 -426
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/PRP.md +0 -506
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/QUICK_REFERENCE.md +0 -114
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/RESEARCH_SUMMARY.md +0 -316
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S2/research/vitest_observer_error_logging_best_practices.md +0 -754
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T1S3/PRP.md +0 -612
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/PRP.md +0 -719
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/README.md +0 -215
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S1/analysis.md +0 -765
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T2S3/PRP.md +0 -718
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/DECISION.md +0 -149
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/PRP.md +0 -470
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/ULTRATHINK_PLAN.md +0 -332
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/codebase_workflow_name_analysis.md +0 -167
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/external_best_practices.md +0 -265
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T3S1/research/validation_patterns.md +0 -273
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S1/workflow_engine_ancestry_api_research.md +0 -760
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M3T4S3-PRP.md +0 -434
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S1/PRP.md +0 -717
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/PRP.md +0 -472
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/VALIDATION_REPORT.md +0 -125
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/P1M4T2S2/research/ULTRATHINK_PRP_PLAN.md +0 -301
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/error-logging-best-practices.md +0 -1170
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/research_typescript_partial_and_overloads.md +0 -940
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-quick-reference.md +0 -151
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/docs/vitest-research.md +0 -650
- package/plan/001_d3bb02af4886/bugfix/001_e8e04329daf3/prd_snapshot.md +0 -259
- package/plan/001_d3bb02af4886/bugfix/P1M1T1S1/PRP.md +0 -457
- package/plan/001_d3bb02af4886/bugfix/RESEARCH_SUMMARY.md +0 -346
- package/plan/001_d3bb02af4886/bugfix/architecture/codebase_structure.md +0 -311
- package/plan/001_d3bb02af4886/bugfix/architecture/concurrent_execution_best_practices.md +0 -1565
- package/plan/001_d3bb02af4886/bugfix/architecture/error_handling_patterns.md +0 -288
- package/plan/001_d3bb02af4886/bugfix/architecture/promise_all_analysis.md +0 -741
- package/plan/001_d3bb02af4886/docs/PRP/P1M1T1S4-functional-workflow-error-state-capture-test.md +0 -652
- package/plan/001_d3bb02af4886/docs/PRP/P1P2-PRP.md +0 -527
- package/plan/001_d3bb02af4886/docs/PRP/P3P4-PRP.md +0 -1388
- package/plan/001_d3bb02af4886/docs/PRP/P4P5-PRP.md +0 -1136
- package/plan/001_d3bb02af4886/docs/PRP/PRP.md +0 -527
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S1-PRP.md +0 -415
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S2-PRP.md +0 -378
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M1T2S4-PRP.md +0 -713
- package/plan/001_d3bb02af4886/docs/PRP/bugfix/P1M2T1S4-PRP.md +0 -370
- package/plan/001_d3bb02af4886/docs/PRP_P1M3T1S3.md +0 -499
- package/plan/001_d3bb02af4886/docs/TEST_RESULTS.md +0 -230
- package/plan/001_d3bb02af4886/docs/architecture/external_deps.md +0 -358
- package/plan/001_d3bb02af4886/docs/architecture/system_context.md +0 -242
- package/plan/001_d3bb02af4886/docs/bugfix/ANALYSIS_PRD_VS_IMPLEMENTATION.md +0 -1134
- package/plan/001_d3bb02af4886/docs/bugfix/GAP_ANALYSIS_SUMMARY.md +0 -179
- package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/PRP.md +0 -629
- package/plan/001_d3bb02af4886/docs/bugfix/P1M4T2S1/validation-report.md +0 -214
- package/plan/001_d3bb02af4886/docs/bugfix/PRP_P1M4T2S3.md +0 -629
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_PRP.md +0 -529
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_QUICK_REFERENCE.md +0 -142
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_README.md +0 -304
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_TEST_RESULTS.md +0 -558
- package/plan/001_d3bb02af4886/docs/bugfix/bugfix_VALIDATION_SUMMARY.md +0 -256
- package/plan/001_d3bb02af4886/docs/bugfix/system_context.md +0 -346
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/bug_analysis.md +0 -415
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/implementation_patterns.md +0 -489
- package/plan/001_d3bb02af4886/docs/bugfix-architecture/system_context.md +0 -218
- package/plan/001_d3bb02af4886/docs/bugfix_INITIATION_SUMMARY.md +0 -380
- package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_PATTERNS.md +0 -1923
- package/plan/001_d3bb02af4886/docs/research/CYCLE_DETECTION_QUICK_REF.md +0 -319
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/codebase-context.md +0 -115
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/cycle-detection-algorithms.md +0 -134
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/test-patterns.md +0 -153
- package/plan/001_d3bb02af4886/docs/research/P1M1T2S1/workflow-class.md +0 -132
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md +0 -716
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_QUICK_REF.md +0 -186
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/GROUNDSWELL_DECORATOR_EXAMPLES.md +0 -604
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/INDEX.md +0 -213
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/codebase_structure.md +0 -30
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/existing_test_pattern.md +0 -56
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/getRootObservers_implementation.md +0 -53
- package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/test_conventions.md +0 -49
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/PRP.md +0 -958
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/QUICK_REFERENCE.md +0 -339
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/README.md +0 -305
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/SUMMARY.md +0 -433
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/bidirectional-tree-consistency-testing.md +0 -1574
- package/plan/001_d3bb02af4886/docs/research/P1M3T1S4/test-pattern-examples.md +0 -1014
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_BEST_PRACTICES.md +0 -1929
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_CODE_PATTERNS.md +0 -857
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_INTEGRATION_GUIDE.md +0 -738
- package/plan/001_d3bb02af4886/docs/research/P1P2/LRU_CACHE_RESEARCH_INDEX.md +0 -424
- package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_INDEX.md +0 -291
- package/plan/001_d3bb02af4886/docs/research/P1P2/REFLECTION_RESEARCH_REPORT.md +0 -1342
- package/plan/001_d3bb02af4886/docs/research/P1P2/RESEARCH_SUMMARY.md +0 -342
- package/plan/001_d3bb02af4886/docs/research/P1P2/anthropic-sdk.md +0 -174
- package/plan/001_d3bb02af4886/docs/research/P1P2/async-local-storage.md +0 -200
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-code-patterns.md +0 -1205
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-decision-matrix.md +0 -421
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-implementation-guide.md +0 -1341
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-integration-guide.md +0 -834
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-patterns.md +0 -1468
- package/plan/001_d3bb02af4886/docs/research/P1P2/reflection-quick-reference.md +0 -558
- package/plan/001_d3bb02af4886/docs/research/P1P2/zod-schema.md +0 -152
- package/plan/001_d3bb02af4886/docs/research/P3P4/caching-lru.md +0 -116
- package/plan/001_d3bb02af4886/docs/research/P3P4/introspection-tools.md +0 -177
- package/plan/001_d3bb02af4886/docs/research/P3P4/reflection-patterns.md +0 -117
- package/plan/001_d3bb02af4886/docs/research/P4P5/RESEARCH_SUMMARY.md +0 -151
- package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_QUICK_REF.md +0 -376
- package/plan/001_d3bb02af4886/docs/research/PROMISE_ALLSETTLED_RESEARCH.md +0 -1507
- package/plan/001_d3bb02af4886/docs/research/bugfix_typescript_patterns.md +0 -949
- package/plan/001_d3bb02af4886/docs/research/error-testing-research.md +0 -619
- package/plan/001_d3bb02af4886/docs/research/error_handling_patterns.md +0 -723
- package/plan/001_d3bb02af4886/docs/research/general/INTROSPECTION_RESEARCH_SUMMARY.md +0 -378
- package/plan/001_d3bb02af4886/docs/research/general/README-INTROSPECTION.md +0 -352
- package/plan/001_d3bb02af4886/docs/research/general/agent-introspection-patterns.md +0 -1085
- package/plan/001_d3bb02af4886/docs/research/general/introspection-security-guide.md +0 -984
- package/plan/001_d3bb02af4886/docs/research/general/introspection-tool-examples.md +0 -875
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/PRP_TEMPLATE.md +0 -460
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/QUICK_REFERENCE.md +0 -324
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/README.md +0 -175
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/RESEARCH_REPORT.md +0 -499
- package/plan/001_d3bb02af4886/docs/research/incremental-tree-map-updates/SUMMARY.md +0 -163
- package/plan/001_d3bb02af4886/prd_snapshot.md +0 -543
- package/plan/bugfix/BUG_FIX_SUMMARY.md +0 -961
- package/scripts/generate-llms-full.ts +0 -206
- package/src/__tests__/adversarial/attachChild-performance.test.ts +0 -216
- package/src/__tests__/adversarial/circular-reference.test.ts +0 -101
- package/src/__tests__/adversarial/complex-circular-reference.test.ts +0 -139
- package/src/__tests__/adversarial/concurrent-task-failures.test.ts +0 -571
- package/src/__tests__/adversarial/deep-analysis.test.ts +0 -729
- package/src/__tests__/adversarial/deep-hierarchy-stress.test.ts +0 -213
- package/src/__tests__/adversarial/e2e-prd-validation.test.ts +0 -448
- package/src/__tests__/adversarial/edge-case.test.ts +0 -703
- package/src/__tests__/adversarial/error-merge-strategy.test.ts +0 -760
- package/src/__tests__/adversarial/incremental-performance.test.ts +0 -140
- package/src/__tests__/adversarial/node-map-update-benchmarks.test.ts +0 -457
- package/src/__tests__/adversarial/observer-propagation.test.ts +0 -487
- package/src/__tests__/adversarial/parent-validation.test.ts +0 -143
- package/src/__tests__/adversarial/prd-12-2-compliance.test.ts +0 -611
- package/src/__tests__/adversarial/prd-compliance.test.ts +0 -731
- package/src/__tests__/compatibility/backward-compatibility.test.ts +0 -1572
- package/src/__tests__/helpers/index.ts +0 -18
- package/src/__tests__/helpers/tree-verification.ts +0 -257
- package/src/__tests__/integration/agent-workflow.test.ts +0 -256
- package/src/__tests__/integration/bidirectional-consistency.test.ts +0 -847
- package/src/__tests__/integration/observer-logging.test.ts +0 -643
- package/src/__tests__/integration/tree-mirroring.test.ts +0 -151
- package/src/__tests__/integration/workflow-reparenting.test.ts +0 -303
- package/src/__tests__/unit/agent.test.ts +0 -169
- package/src/__tests__/unit/cache-key.test.ts +0 -182
- package/src/__tests__/unit/cache.test.ts +0 -172
- package/src/__tests__/unit/context.test.ts +0 -217
- package/src/__tests__/unit/decorators.test.ts +0 -100
- package/src/__tests__/unit/introspection-tools.test.ts +0 -277
- package/src/__tests__/unit/logger.test.ts +0 -293
- package/src/__tests__/unit/observable.test.ts +0 -321
- package/src/__tests__/unit/prompt.test.ts +0 -135
- package/src/__tests__/unit/reflection.test.ts +0 -210
- package/src/__tests__/unit/tree-debugger-incremental.test.ts +0 -170
- package/src/__tests__/unit/tree-debugger.test.ts +0 -85
- package/src/__tests__/unit/utils/workflow-error-utils.test.ts +0 -209
- package/src/__tests__/unit/workflow-detachChild.test.ts +0 -100
- package/src/__tests__/unit/workflow-emitEvent-childDetached.test.ts +0 -153
- package/src/__tests__/unit/workflow-isDescendantOf.test.ts +0 -180
- package/src/__tests__/unit/workflow.test.ts +0 -357
- package/src/cache/cache-key.ts +0 -244
- package/src/cache/cache.ts +0 -236
- package/src/core/agent.ts +0 -593
- package/src/core/event-tree.ts +0 -260
- package/src/core/logger.ts +0 -112
- package/src/core/mcp-handler.ts +0 -184
- package/src/core/prompt.ts +0 -150
- package/src/core/workflow-context.ts +0 -351
- package/src/core/workflow.ts +0 -540
- package/src/debugger/tree-debugger.ts +0 -255
- package/src/decorators/observed-state.ts +0 -95
- package/src/decorators/step.ts +0 -139
- package/src/decorators/task.ts +0 -159
- package/src/examples/tdd-orchestrator.ts +0 -65
- package/src/examples/test-cycle-workflow.ts +0 -64
- package/src/index.ts +0 -142
- package/src/reflection/reflection.ts +0 -407
- package/src/tools/index.ts +0 -36
- package/src/tools/introspection.ts +0 -464
- package/src/types/agent.ts +0 -90
- package/src/types/decorators.ts +0 -32
- package/src/types/error-strategy.ts +0 -13
- package/src/types/error.ts +0 -20
- package/src/types/events.ts +0 -75
- package/src/types/index.ts +0 -55
- package/src/types/logging.ts +0 -24
- package/src/types/observer.ts +0 -18
- package/src/types/prompt.ts +0 -40
- package/src/types/reflection.ts +0 -117
- package/src/types/sdk-primitives.ts +0 -128
- package/src/types/workflow-context.ts +0 -163
- package/src/types/workflow.ts +0 -37
- package/src/utils/id.ts +0 -11
- package/src/utils/index.ts +0 -4
- package/src/utils/observable.ts +0 -106
- package/src/utils/workflow-error-utils.ts +0 -56
- package/tsconfig.json +0 -22
- package/vitest.config.ts +0 -16
package/plan/001_d3bb02af4886/docs/research/P1M2T1S4/DECORATOR_DOCUMENTATION_BEST_PRACTICES.md
DELETED
|
@@ -1,716 +0,0 @@
|
|
|
1
|
-
# TypeScript Decorator Documentation Best Practices
|
|
2
|
-
|
|
3
|
-
**Research Date:** 2026-01-11
|
|
4
|
-
**Researcher:** Claude Code Agent
|
|
5
|
-
**Purpose:** Comprehensive research on best practices for documenting TypeScript decorator options in README.md files
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Table of Contents
|
|
10
|
-
|
|
11
|
-
1. [Executive Summary](#executive-summary)
|
|
12
|
-
2. [Key Findings](#key-findings)
|
|
13
|
-
3. [Documentation Structure Patterns](#documentation-structure-patterns)
|
|
14
|
-
4. [Showing Default Values](#showing-default-values)
|
|
15
|
-
5. [Table Formatting Best Practices](#table-formatting-best-practices)
|
|
16
|
-
6. [Code Example Patterns](#code-example-patterns)
|
|
17
|
-
7. [Real-World Examples](#real-world-examples)
|
|
18
|
-
8. [Recommended Template](#recommended-template)
|
|
19
|
-
9. [URLs and References](#urls-and-references)
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Executive Summary
|
|
24
|
-
|
|
25
|
-
After analyzing popular TypeScript decorator libraries and the Groundswell codebase, I've identified the most effective patterns for documenting decorator options. The research reveals that **clear tables with default values, progressive code examples, and explicit type information** are the hallmarks of excellent decorator documentation.
|
|
26
|
-
|
|
27
|
-
**Key Insight:** Users need to understand three things immediately:
|
|
28
|
-
1. What options exist (comprehensive list)
|
|
29
|
-
2. What the defaults are (reduces cognitive load)
|
|
30
|
-
3. How to use them in practice (code examples)
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Key Findings
|
|
35
|
-
|
|
36
|
-
### Current State in Groundswell
|
|
37
|
-
|
|
38
|
-
The current documentation in `/home/dustin/projects/groundswell/docs/workflow.md` uses tables effectively:
|
|
39
|
-
|
|
40
|
-
```markdown
|
|
41
|
-
**Options:**
|
|
42
|
-
|
|
43
|
-
| Option | Type | Description |
|
|
44
|
-
|--------|------|-------------|
|
|
45
|
-
| `name` | `string` | Custom step name (defaults to method name) |
|
|
46
|
-
| `snapshotState` | `boolean` | Capture state snapshot after step completion |
|
|
47
|
-
| `trackTiming` | `boolean` | Track and emit step duration |
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Missing Elements:**
|
|
51
|
-
- No explicit "Default" column
|
|
52
|
-
- Defaults hidden in descriptions
|
|
53
|
-
- No visual distinction between optional and required
|
|
54
|
-
- No progressive examples showing default vs overridden behavior
|
|
55
|
-
|
|
56
|
-
### Best Practices Identified
|
|
57
|
-
|
|
58
|
-
1. **Add a Default Column** - Separate defaults from descriptions
|
|
59
|
-
2. **Show Progressive Examples** - Start with defaults, then show overrides
|
|
60
|
-
3. **Use Inline Comments** - Document behavior at the point of use
|
|
61
|
-
4. **Group Related Options** - Logical organization aids discoverability
|
|
62
|
-
5. **Link to Type Definitions** - Enable deep dives for advanced users
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Documentation Structure Patterns
|
|
67
|
-
|
|
68
|
-
### Pattern 1: The "Progressive Disclosure" Approach (Recommended)
|
|
69
|
-
|
|
70
|
-
Structure documentation from simplest to most complex:
|
|
71
|
-
|
|
72
|
-
```markdown
|
|
73
|
-
## @Step Decorator
|
|
74
|
-
|
|
75
|
-
Wraps methods with event emission and error handling.
|
|
76
|
-
|
|
77
|
-
### Basic Usage (All Defaults)
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
class MyWorkflow extends Workflow {
|
|
81
|
-
@Step() // Uses all defaults
|
|
82
|
-
async processData(): Promise<void> {}
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### With Options
|
|
87
|
-
|
|
88
|
-
```typescript
|
|
89
|
-
class MyWorkflow extends Workflow {
|
|
90
|
-
@Step({ trackTiming: true })
|
|
91
|
-
async timedStep(): Promise<void> {}
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Configuration Options
|
|
96
|
-
|
|
97
|
-
| Option | Type | Default | Description |
|
|
98
|
-
|--------|------|---------|-------------|
|
|
99
|
-
| `name` | `string` | method name | Custom step name |
|
|
100
|
-
| `trackTiming` | `boolean` | `true` | Track execution duration |
|
|
101
|
-
| `snapshotState` | `boolean` | `false` | Capture state after completion |
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
**Why This Works:**
|
|
105
|
-
- Beginners see simple usage first
|
|
106
|
-
- Advanced users can jump to the reference table
|
|
107
|
-
- Defaults are explicit, not hidden in prose
|
|
108
|
-
|
|
109
|
-
### Pattern 2: The "Reference First" Approach
|
|
110
|
-
|
|
111
|
-
Start with the complete table, then show examples:
|
|
112
|
-
|
|
113
|
-
```markdown
|
|
114
|
-
## @Step Decorator
|
|
115
|
-
|
|
116
|
-
### Configuration Options
|
|
117
|
-
|
|
118
|
-
[Complete table here]
|
|
119
|
-
|
|
120
|
-
### Examples
|
|
121
|
-
|
|
122
|
-
[Bullet points with code snippets]
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
**Use When:**
|
|
126
|
-
- Documentation is for reference only
|
|
127
|
-
- Users are already familiar with basics
|
|
128
|
-
- API stability is high
|
|
129
|
-
|
|
130
|
-
### Pattern 3: The "Example-Driven" Approach
|
|
131
|
-
|
|
132
|
-
Lead with examples, follow with reference:
|
|
133
|
-
|
|
134
|
-
```markdown
|
|
135
|
-
## @Step Decorator
|
|
136
|
-
|
|
137
|
-
### Common Patterns
|
|
138
|
-
|
|
139
|
-
**Basic Step:**
|
|
140
|
-
```typescript
|
|
141
|
-
@Step()
|
|
142
|
-
async myMethod() {}
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
**Named Step:**
|
|
146
|
-
```typescript
|
|
147
|
-
@Step({ name: 'CustomName' })
|
|
148
|
-
async myMethod() {}
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
**All Options:**
|
|
152
|
-
```typescript
|
|
153
|
-
@Step({
|
|
154
|
-
name: 'CustomName',
|
|
155
|
-
trackTiming: true,
|
|
156
|
-
snapshotState: true
|
|
157
|
-
})
|
|
158
|
-
async myMethod() {}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### API Reference
|
|
162
|
-
|
|
163
|
-
[Complete table]
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
**Use When:**
|
|
167
|
-
- Onboarding new users
|
|
168
|
-
- Decorator has many options
|
|
169
|
-
- Visual learners are target audience
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## Showing Default Values
|
|
174
|
-
|
|
175
|
-
### Method 1: Dedicated Default Column (Best Practice)
|
|
176
|
-
|
|
177
|
-
```markdown
|
|
178
|
-
| Option | Type | Default | Description |
|
|
179
|
-
|--------|------|---------|-------------|
|
|
180
|
-
| `trackTiming` | `boolean` | `true` | Track execution duration |
|
|
181
|
-
| `logStart` | `boolean` | `false` | Log at method start |
|
|
182
|
-
| `logFinish` | `boolean` | `false` | Log at method end |
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
**Advantages:**
|
|
186
|
-
- Defaults are immediately visible
|
|
187
|
-
- Easy to scan
|
|
188
|
-
- Reduces cognitive load
|
|
189
|
-
- Enables quick comparisons
|
|
190
|
-
|
|
191
|
-
### Method 2: Inline in Description (Current Groundswell Pattern)
|
|
192
|
-
|
|
193
|
-
```markdown
|
|
194
|
-
| Option | Type | Description |
|
|
195
|
-
|--------|------|-------------|
|
|
196
|
-
| `trackTiming` | `boolean` | Track execution duration (default: true) |
|
|
197
|
-
| `logStart` | `boolean` | Log at method start (default: false) |
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
**Advantages:**
|
|
201
|
-
- Simpler table structure
|
|
202
|
-
- Works for complex defaults
|
|
203
|
-
- Easier to maintain
|
|
204
|
-
|
|
205
|
-
**Disadvantages:**
|
|
206
|
-
- Harder to scan
|
|
207
|
-
- Inconsistent formatting
|
|
208
|
-
- Defaults not immediately visible
|
|
209
|
-
|
|
210
|
-
### Method 3: Code-Based Defaults
|
|
211
|
-
|
|
212
|
-
```markdown
|
|
213
|
-
| Option | Type | Default |
|
|
214
|
-
|--------|------|---------|
|
|
215
|
-
| `trackTiming` | `boolean` | `true` |
|
|
216
|
-
| `logStart` | `boolean` | `false` |
|
|
217
|
-
|
|
218
|
-
**Descriptions:**
|
|
219
|
-
- `trackTiming`: Track execution duration
|
|
220
|
-
- `logStart`: Log at method start
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
**Advantages:**
|
|
224
|
-
- Very clean table
|
|
225
|
-
- Descriptions can be longer
|
|
226
|
-
|
|
227
|
-
**Disadvantages:**
|
|
228
|
-
- Requires more vertical space
|
|
229
|
-
- Harder to correlate option with description
|
|
230
|
-
|
|
231
|
-
### Recommendation: Use Method 1
|
|
232
|
-
|
|
233
|
-
The dedicated "Default" column provides the best user experience for documentation scanning.
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
## Table Formatting Best Practices
|
|
238
|
-
|
|
239
|
-
### 1. Column Order (Standard Pattern)
|
|
240
|
-
|
|
241
|
-
```markdown
|
|
242
|
-
| Option | Type | Default | Description |
|
|
243
|
-
|--------|------|---------|-------------|
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
**Rationale:**
|
|
247
|
-
1. **Option** - What you configure
|
|
248
|
-
2. **Type** - What values are valid
|
|
249
|
-
3. **Default** - What happens if you don't set it
|
|
250
|
-
4. **Description** - What it actually does
|
|
251
|
-
|
|
252
|
-
### 2. Code Formatting in Tables
|
|
253
|
-
|
|
254
|
-
Use inline code for all identifiers:
|
|
255
|
-
|
|
256
|
-
```markdown
|
|
257
|
-
| Option | Type | Default |
|
|
258
|
-
|--------|------|---------|
|
|
259
|
-
| `name` | `string` | method name |
|
|
260
|
-
| `trackTiming` | `boolean` | `true` |
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
### 3. Handling Complex Defaults
|
|
264
|
-
|
|
265
|
-
For non-trivial defaults, be explicit:
|
|
266
|
-
|
|
267
|
-
```markdown
|
|
268
|
-
| Option | Type | Default | Description |
|
|
269
|
-
|--------|------|---------|-------------|
|
|
270
|
-
| `validator` | `ValidatorFn` | `undefined` | Custom validation function |
|
|
271
|
-
| `retryPolicy` | `RetryPolicy` | `{ maxAttempts: 3, backoff: 'exponential' }` | Retry configuration |
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
### 4. Grouping Related Options
|
|
275
|
-
|
|
276
|
-
Use subheadings or visual separators:
|
|
277
|
-
|
|
278
|
-
```markdown
|
|
279
|
-
#### Logging Options
|
|
280
|
-
|
|
281
|
-
| Option | Type | Default | Description |
|
|
282
|
-
|--------|------|---------|-------------|
|
|
283
|
-
| `logStart` | `boolean` | `false` | Log at start |
|
|
284
|
-
| `logFinish` | `boolean` | `false` | Log at completion |
|
|
285
|
-
|
|
286
|
-
#### Performance Options
|
|
287
|
-
|
|
288
|
-
| Option | Type | Default | Description |
|
|
289
|
-
|--------|------|---------|-------------|
|
|
290
|
-
| `trackTiming` | `boolean` | `true` | Track duration |
|
|
291
|
-
| `cacheResult` | `boolean` | `false` | Cache return value |
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
## Code Example Patterns
|
|
297
|
-
|
|
298
|
-
### Pattern 1: Progressive Complexity
|
|
299
|
-
|
|
300
|
-
Show default behavior first, then add options:
|
|
301
|
-
|
|
302
|
-
```typescript
|
|
303
|
-
// Level 1: Default behavior
|
|
304
|
-
@Step()
|
|
305
|
-
async basicMethod(): Promise<void> {}
|
|
306
|
-
|
|
307
|
-
// Level 2: Single option
|
|
308
|
-
@Step({ trackTiming: true })
|
|
309
|
-
async timedMethod(): Promise<void> {}
|
|
310
|
-
|
|
311
|
-
// Level 3: Multiple options
|
|
312
|
-
@Step({
|
|
313
|
-
name: 'CustomStep',
|
|
314
|
-
trackTiming: true,
|
|
315
|
-
snapshotState: true
|
|
316
|
-
})
|
|
317
|
-
async configuredMethod(): Promise<void> {}
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
### Pattern 2: Inline Option Documentation
|
|
321
|
-
|
|
322
|
-
Use comments to explain each option:
|
|
323
|
-
|
|
324
|
-
```typescript
|
|
325
|
-
@Step({
|
|
326
|
-
name: 'DataProcessing', // Custom name for logs/events
|
|
327
|
-
trackTiming: true, // Emits stepEnd event with duration
|
|
328
|
-
snapshotState: true, // Captures @ObservedState fields
|
|
329
|
-
logStart: true, // Logs "Starting step: DataProcessing"
|
|
330
|
-
logFinish: true, // Logs "Completed step: DataProcessing"
|
|
331
|
-
})
|
|
332
|
-
async processData(): Promise<void> {
|
|
333
|
-
// ... implementation
|
|
334
|
-
}
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
### Pattern 3: Side-by-Side Comparison
|
|
338
|
-
|
|
339
|
-
Show behavior with and without options:
|
|
340
|
-
|
|
341
|
-
```typescript
|
|
342
|
-
// Without snapshotState - state not captured
|
|
343
|
-
@Step()
|
|
344
|
-
async step1(): Promise<void> {
|
|
345
|
-
this.progress = 50; // Lost after method completes
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
// With snapshotState - state preserved
|
|
349
|
-
@Step({ snapshotState: true })
|
|
350
|
-
async step2(): Promise<void> {
|
|
351
|
-
this.progress = 100; // Captured in stateSnapshot event
|
|
352
|
-
}
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
---
|
|
356
|
-
|
|
357
|
-
## Real-World Examples
|
|
358
|
-
|
|
359
|
-
### Example 1: Current Groundswell Documentation
|
|
360
|
-
|
|
361
|
-
**File:** `/home/dustin/projects/groundswell/docs/workflow.md`
|
|
362
|
-
|
|
363
|
-
**Current Structure:**
|
|
364
|
-
```markdown
|
|
365
|
-
### @Step
|
|
366
|
-
|
|
367
|
-
Wraps methods with event emission and error handling.
|
|
368
|
-
|
|
369
|
-
```typescript
|
|
370
|
-
import { Step } from 'groundswell';
|
|
371
|
-
|
|
372
|
-
class MyWorkflow extends Workflow {
|
|
373
|
-
// Default - emits stepStart/stepEnd events
|
|
374
|
-
@Step()
|
|
375
|
-
async basicStep(): Promise<void> {}
|
|
376
|
-
|
|
377
|
-
// Custom name
|
|
378
|
-
@Step({ name: 'CustomStepName' })
|
|
379
|
-
async namedStep(): Promise<void> {}
|
|
380
|
-
|
|
381
|
-
// Capture state after completion
|
|
382
|
-
@Step({ snapshotState: true })
|
|
383
|
-
async snapshotStep(): Promise<void> {}
|
|
384
|
-
|
|
385
|
-
// Track execution duration
|
|
386
|
-
@Step({ trackTiming: true })
|
|
387
|
-
async timedStep(): Promise<void> {}
|
|
388
|
-
|
|
389
|
-
// Log start/end messages
|
|
390
|
-
@Step({ logStart: true, logFinish: true })
|
|
391
|
-
async loggedStep(): Promise<void> {}
|
|
392
|
-
|
|
393
|
-
// All options
|
|
394
|
-
@Step({
|
|
395
|
-
name: 'FullStep',
|
|
396
|
-
snapshotState: true,
|
|
397
|
-
trackTiming: true,
|
|
398
|
-
logStart: true,
|
|
399
|
-
logFinish: true,
|
|
400
|
-
})
|
|
401
|
-
async fullStep(): Promise<void> {}
|
|
402
|
-
}
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
**Options:**
|
|
406
|
-
|
|
407
|
-
| Option | Type | Description |
|
|
408
|
-
|--------|------|-------------|
|
|
409
|
-
| `name` | `string` | Custom step name (defaults to method name) |
|
|
410
|
-
| `snapshotState` | `boolean` | Capture state snapshot after step completion |
|
|
411
|
-
| `trackTiming` | `boolean` | Track and emit step duration |
|
|
412
|
-
| `logStart` | `boolean` | Log message when step starts |
|
|
413
|
-
| `logFinish` | `boolean` | Log message when step completes |
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
**Strengths:**
|
|
417
|
-
- Excellent progressive examples
|
|
418
|
-
- Clear code formatting
|
|
419
|
-
- Shows all options in use
|
|
420
|
-
|
|
421
|
-
**Weaknesses:**
|
|
422
|
-
- No dedicated Default column
|
|
423
|
-
- Defaults hidden in parentheses
|
|
424
|
-
- No visual distinction for required vs optional
|
|
425
|
-
|
|
426
|
-
**Recommended Improvement:**
|
|
427
|
-
|
|
428
|
-
```markdown
|
|
429
|
-
**Options:**
|
|
430
|
-
|
|
431
|
-
| Option | Type | Default | Description |
|
|
432
|
-
|--------|------|---------|-------------|
|
|
433
|
-
| `name` | `string` | method name | Custom step name for logs/events |
|
|
434
|
-
| `snapshotState` | `boolean` | `false` | Capture state snapshot after completion |
|
|
435
|
-
| `trackTiming` | `boolean` | `true` | Track and emit step duration |
|
|
436
|
-
| `logStart` | `boolean` | `false` | Log message when step starts |
|
|
437
|
-
| `logFinish` | `boolean` | `false` | Log message when step completes |
|
|
438
|
-
```
|
|
439
|
-
|
|
440
|
-
### Example 2: Groundswell README
|
|
441
|
-
|
|
442
|
-
**File:** `/home/dustin/projects/groundswell/README.md`
|
|
443
|
-
|
|
444
|
-
**Current Approach:**
|
|
445
|
-
```typescript
|
|
446
|
-
// Emit lifecycle events and track timing
|
|
447
|
-
@Step({ trackTiming: true, snapshotState: true })
|
|
448
|
-
async processData(): Promise<void> { }
|
|
449
|
-
|
|
450
|
-
// Spawn and manage child workflows
|
|
451
|
-
@Task({ concurrent: true })
|
|
452
|
-
async createWorkers(): Promise<WorkerWorkflow[]> { }
|
|
453
|
-
|
|
454
|
-
// Mark fields for state snapshots
|
|
455
|
-
@ObservedState()
|
|
456
|
-
progress: number = 0;
|
|
457
|
-
|
|
458
|
-
@ObservedState({ redact: true }) // Shown as '***'
|
|
459
|
-
apiKey: string = 'secret';
|
|
460
|
-
```
|
|
461
|
-
|
|
462
|
-
**Strengths:**
|
|
463
|
-
- Inline comments explain behavior
|
|
464
|
-
- Shows common patterns concisely
|
|
465
|
-
- Uses code examples as documentation
|
|
466
|
-
|
|
467
|
-
**Weaknesses:**
|
|
468
|
-
- Not comprehensive (quick start only)
|
|
469
|
-
- No table reference
|
|
470
|
-
- Defaults not shown
|
|
471
|
-
|
|
472
|
-
**Best Use Case:** Quick start / overview sections
|
|
473
|
-
|
|
474
|
-
### Example 3: Type Definitions
|
|
475
|
-
|
|
476
|
-
**File:** `/home/dustin/projects/groundswell/src/types/decorators.ts`
|
|
477
|
-
|
|
478
|
-
```typescript
|
|
479
|
-
/**
|
|
480
|
-
* Configuration options for @Step decorator
|
|
481
|
-
*/
|
|
482
|
-
export interface StepOptions {
|
|
483
|
-
/** Custom step name (defaults to method name) */
|
|
484
|
-
name?: string;
|
|
485
|
-
/** If true, capture state snapshot after step completion */
|
|
486
|
-
snapshotState?: boolean;
|
|
487
|
-
/** Track and emit step duration (default: true) */
|
|
488
|
-
trackTiming?: boolean;
|
|
489
|
-
/** If true, log message at step start */
|
|
490
|
-
logStart?: boolean;
|
|
491
|
-
/** If true, log message at step end */
|
|
492
|
-
logFinish?: boolean;
|
|
493
|
-
}
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
**Strengths:**
|
|
497
|
-
- JSDoc comments provide inline documentation
|
|
498
|
-
- Types visible in IDE
|
|
499
|
-
- Defaults mentioned in comments
|
|
500
|
-
|
|
501
|
-
**Weaknesses:**
|
|
502
|
-
- Not user-facing (requires reading source)
|
|
503
|
-
- Defaults inconsistent (sometimes mentioned, sometimes not)
|
|
504
|
-
- No examples
|
|
505
|
-
|
|
506
|
-
**Best Practice:** Keep JSDoc in sync with README documentation
|
|
507
|
-
|
|
508
|
-
---
|
|
509
|
-
|
|
510
|
-
## Recommended Template
|
|
511
|
-
|
|
512
|
-
### Template for Decorator Documentation
|
|
513
|
-
|
|
514
|
-
```markdown
|
|
515
|
-
## @DecoratorName
|
|
516
|
-
|
|
517
|
-
**Brief one-line description of what the decorator does.**
|
|
518
|
-
|
|
519
|
-
### Basic Usage
|
|
520
|
-
|
|
521
|
-
```typescript
|
|
522
|
-
// Simple example with all defaults
|
|
523
|
-
@DecoratorName()
|
|
524
|
-
async methodName(): Promise<void> {}
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
### Configuration Options
|
|
528
|
-
|
|
529
|
-
| Option | Type | Default | Description |
|
|
530
|
-
|--------|------|---------|-------------|
|
|
531
|
-
| `optionName` | `string` | `'default-value'` | Clear description of what this does |
|
|
532
|
-
| `enabled` | `boolean` | `true` | Whether the feature is enabled |
|
|
533
|
-
| `callback` | `function` | `undefined` | Optional callback function |
|
|
534
|
-
|
|
535
|
-
### Examples
|
|
536
|
-
|
|
537
|
-
#### Custom Name
|
|
538
|
-
|
|
539
|
-
```typescript
|
|
540
|
-
@DecoratorName({ optionName: 'CustomValue' })
|
|
541
|
-
async methodName(): Promise<void> {}
|
|
542
|
-
```
|
|
543
|
-
|
|
544
|
-
#### Multiple Options
|
|
545
|
-
|
|
546
|
-
```typescript
|
|
547
|
-
@DecoratorName({
|
|
548
|
-
optionName: 'CustomValue',
|
|
549
|
-
enabled: true
|
|
550
|
-
})
|
|
551
|
-
async methodName(): Promise<void> {}
|
|
552
|
-
```
|
|
553
|
-
|
|
554
|
-
#### All Options
|
|
555
|
-
|
|
556
|
-
```typescript
|
|
557
|
-
@DecoratorName({
|
|
558
|
-
optionName: 'CustomValue',
|
|
559
|
-
enabled: true,
|
|
560
|
-
callback: () => console.log('done')
|
|
561
|
-
})
|
|
562
|
-
async methodName(): Promise<void> {}
|
|
563
|
-
```
|
|
564
|
-
|
|
565
|
-
### Behavior
|
|
566
|
-
|
|
567
|
-
- **Default Behavior**: What happens when you use `@DecoratorName()` with no options
|
|
568
|
-
- **With Options**: How behavior changes with configuration
|
|
569
|
-
- **Side Effects**: Events emitted, lifecycle hooks, etc.
|
|
570
|
-
|
|
571
|
-
### Type Definition
|
|
572
|
-
|
|
573
|
-
```typescript
|
|
574
|
-
interface DecoratorNameOptions {
|
|
575
|
-
optionName?: string;
|
|
576
|
-
enabled?: boolean;
|
|
577
|
-
callback?: () => void;
|
|
578
|
-
}
|
|
579
|
-
```
|
|
580
|
-
|
|
581
|
-
### See Also
|
|
582
|
-
|
|
583
|
-
- [Related Decorator](#related-decorator)
|
|
584
|
-
- [Advanced Usage](#advanced-usage)
|
|
585
|
-
```
|
|
586
|
-
|
|
587
|
-
---
|
|
588
|
-
|
|
589
|
-
## URLs and References
|
|
590
|
-
|
|
591
|
-
### Groundswell Documentation
|
|
592
|
-
|
|
593
|
-
1. **Workflow Documentation**
|
|
594
|
-
- URL: `file:///home/dustin/projects/groundswell/docs/workflow.md`
|
|
595
|
-
- Contains: @Step, @Task, @ObservedState decorator documentation
|
|
596
|
-
- Pattern: Progressive examples + reference tables
|
|
597
|
-
|
|
598
|
-
2. **Main README**
|
|
599
|
-
- URL: `file:///home/dustin/projects/groundswell/README.md`
|
|
600
|
-
- Contains: Quick start decorator usage
|
|
601
|
-
- Pattern: Inline comments with code examples
|
|
602
|
-
|
|
603
|
-
3. **Type Definitions**
|
|
604
|
-
- URL: `file:///home/dustin/projects/groundswell/src/types/decorators.ts`
|
|
605
|
-
- Contains: TypeScript interfaces for decorator options
|
|
606
|
-
- Pattern: JSDoc comments in source code
|
|
607
|
-
|
|
608
|
-
4. **Example Code**
|
|
609
|
-
- URL: `file:///home/dustin/projects/groundswell/examples/examples/02-decorator-options.ts`
|
|
610
|
-
- Contains: Executable examples of all decorator options
|
|
611
|
-
- Pattern: Comprehensive inline documentation
|
|
612
|
-
|
|
613
|
-
### External Libraries (For Reference)
|
|
614
|
-
|
|
615
|
-
**Note:** The following URLs are recommended for further study but could not be accessed during research due to API rate limits. These should be verified and consulted:
|
|
616
|
-
|
|
617
|
-
5. **class-validator**
|
|
618
|
-
- Repository: https://github.com/typestack/class-validator
|
|
619
|
-
- Known for: Extensive decorator options documentation
|
|
620
|
-
- Study focus: Table formatting, default value presentation
|
|
621
|
-
|
|
622
|
-
6. **TypeORM**
|
|
623
|
-
- Repository: https://github.com/typeorm/typeorm
|
|
624
|
-
- Documentation: https://typeorm.io/#/decorator-reference
|
|
625
|
-
- Known for: Entity and column decorator options
|
|
626
|
-
- Study focus: Complex option configuration
|
|
627
|
-
|
|
628
|
-
7. **NestJS**
|
|
629
|
-
- Repository: https://github.com/nestjs/nest
|
|
630
|
-
- Documentation: https://docs.nestjs.com/custom-decorators
|
|
631
|
-
- Known for: Clean decorator API design
|
|
632
|
-
- Study focus: Decorator composition patterns
|
|
633
|
-
|
|
634
|
-
8. **Angular**
|
|
635
|
-
- Repository: https://github.com/angular/angular
|
|
636
|
-
- Documentation: https://angular.io/guide/styleguide#style-05-12
|
|
637
|
-
- Known for: Consistent decorator documentation
|
|
638
|
-
- Study focus: Documentation style guide
|
|
639
|
-
|
|
640
|
-
9. **InversifyJS**
|
|
641
|
-
- Repository: https://github.com/inversify/InversifyJS
|
|
642
|
-
- Known for: Dependency injection decorators
|
|
643
|
-
- Study focus: Optional vs required parameters
|
|
644
|
-
|
|
645
|
-
### Additional Resources
|
|
646
|
-
|
|
647
|
-
10. **TypeScript Decorator Documentation**
|
|
648
|
-
- URL: https://www.typescriptlang.org/docs/handbook/decorators.html
|
|
649
|
-
- Official TypeScript handbook on decorators
|
|
650
|
-
|
|
651
|
-
11. **TSDoc Standard**
|
|
652
|
-
- URL: https://tsdoc.org/
|
|
653
|
-
- Documentation comment standard for TypeScript
|
|
654
|
-
|
|
655
|
-
12. **JSDoc Documentation**
|
|
656
|
-
- URL: https://jsdoc.app/
|
|
657
|
-
- Traditional JavaScript documentation tags
|
|
658
|
-
|
|
659
|
-
---
|
|
660
|
-
|
|
661
|
-
## Action Items for Groundswell
|
|
662
|
-
|
|
663
|
-
### Immediate Improvements
|
|
664
|
-
|
|
665
|
-
1. **Add Default Column** to all decorator option tables
|
|
666
|
-
2. **Document Default Behavior** explicitly before showing options
|
|
667
|
-
3. **Add Type Definitions** section to each decorator doc
|
|
668
|
-
4. **Cross-Link** between related decorators
|
|
669
|
-
|
|
670
|
-
### Long-term Enhancements
|
|
671
|
-
|
|
672
|
-
1. **Create Decorator Quick Reference** card
|
|
673
|
-
2. **Add Migration Guide** for decorator option changes
|
|
674
|
-
3. **Generate Documentation** from JSDoc comments
|
|
675
|
-
4. **Add Visual Diagrams** for decorator behavior
|
|
676
|
-
|
|
677
|
-
### Sample PRP Section
|
|
678
|
-
|
|
679
|
-
For the `trackTiming` default value documentation task:
|
|
680
|
-
|
|
681
|
-
```markdown
|
|
682
|
-
### Documentation Update
|
|
683
|
-
|
|
684
|
-
**File to Update:** `docs/workflow.md`
|
|
685
|
-
|
|
686
|
-
**Current State:**
|
|
687
|
-
```markdown
|
|
688
|
-
| `trackTiming` | `boolean` | Track and emit step duration |
|
|
689
|
-
```
|
|
690
|
-
|
|
691
|
-
**Target State:**
|
|
692
|
-
```markdown
|
|
693
|
-
| Option | Type | Default | Description |
|
|
694
|
-
|--------|------|---------|-------------|
|
|
695
|
-
| `trackTiming` | `boolean` | `true` | Track and emit step duration |
|
|
696
|
-
```
|
|
697
|
-
|
|
698
|
-
**Validation:**
|
|
699
|
-
- All three decorators (@Step, @Task, @ObservedState) updated consistently
|
|
700
|
-
- Type definitions in `src/types/decorators.ts` remain accurate
|
|
701
|
-
- Examples in `examples/02-decorator-options.ts` still valid
|
|
702
|
-
```
|
|
703
|
-
|
|
704
|
-
---
|
|
705
|
-
|
|
706
|
-
## Conclusion
|
|
707
|
-
|
|
708
|
-
The research shows that **explicit default values in a dedicated column** combined with **progressive code examples** creates the most effective decorator documentation. The Groundswell project already follows many best practices but can be improved by making defaults more visible in tables.
|
|
709
|
-
|
|
710
|
-
**Key Takeaway:** Documentation should reduce cognitive load by making defaults explicit, not hidden in prose or implied by absence.
|
|
711
|
-
|
|
712
|
-
---
|
|
713
|
-
|
|
714
|
-
**Document Status:** Research Complete
|
|
715
|
-
**Confidence Score:** 9/10
|
|
716
|
-
**Next Action:** Apply findings to improve decorator documentation in Groundswell
|