kollab 0.5.3__tar.gz
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.
- kollab-0.5.3/CLAUDE.md +786 -0
- kollab-0.5.3/LICENSE +21 -0
- kollab-0.5.3/MANIFEST.in +36 -0
- kollab-0.5.3/PKG-INFO +335 -0
- kollab-0.5.3/README.md +288 -0
- kollab-0.5.3/bundles/agents/__init__.py +2 -0
- kollab-0.5.3/bundles/agents/_base/base_prompt.md +36 -0
- kollab-0.5.3/bundles/agents/_base/sections/00-header.md +7 -0
- kollab-0.5.3/bundles/agents/_base/sections/01-session-context.md +177 -0
- kollab-0.5.3/bundles/agents/_base/sections/README.md +77 -0
- kollab-0.5.3/bundles/agents/_base/sections/meta/final-reminders.md +36 -0
- kollab-0.5.3/bundles/agents/_base/sections/meta/quality-assurance.md +47 -0
- kollab-0.5.3/bundles/agents/_base/sections/meta/resource-limits.md +155 -0
- kollab-0.5.3/bundles/agents/_base/sections/meta/terminal-formatting.md +46 -0
- kollab-0.5.3/bundles/agents/_base/sections/meta/thoroughness-mandate.md +19 -0
- kollab-0.5.3/bundles/agents/_base/sections/practices/advanced-troubleshooting.md +33 -0
- kollab-0.5.3/bundles/agents/_base/sections/practices/communication-style.md +49 -0
- kollab-0.5.3/bundles/agents/_base/sections/practices/debugging.md +59 -0
- kollab-0.5.3/bundles/agents/_base/sections/practices/dependencies.md +33 -0
- kollab-0.5.3/bundles/agents/_base/sections/practices/error-handling.md +48 -0
- kollab-0.5.3/bundles/agents/_base/sections/practices/performance.md +23 -0
- kollab-0.5.3/bundles/agents/_base/sections/practices/security.md +43 -0
- kollab-0.5.3/bundles/agents/_base/sections/practices/testing.md +69 -0
- kollab-0.5.3/bundles/agents/_base/sections/protocols/communication.md +109 -0
- kollab-0.5.3/bundles/agents/_base/sections/protocols/investigation-examples.md +85 -0
- kollab-0.5.3/bundles/agents/_base/sections/protocols/question-gate.md +65 -0
- kollab-0.5.3/bundles/agents/_base/sections/protocols/response-patterns.md +24 -0
- kollab-0.5.3/bundles/agents/_base/sections/protocols/task-planning.md +23 -0
- kollab-0.5.3/bundles/agents/_base/sections/protocols/tool-execution.md +23 -0
- kollab-0.5.3/bundles/agents/_base/sections/protocols/tool-workflow.md +63 -0
- kollab-0.5.3/bundles/agents/_base/sections/tool-reference/directory.md +4 -0
- kollab-0.5.3/bundles/agents/_base/sections/tool-reference/file-append.md +24 -0
- kollab-0.5.3/bundles/agents/_base/sections/tool-reference/file-edit.md +44 -0
- kollab-0.5.3/bundles/agents/_base/sections/tool-reference/file-read.md +19 -0
- kollab-0.5.3/bundles/agents/_base/sections/tool-reference/git.md +54 -0
- kollab-0.5.3/bundles/agents/_base/sections/tool-reference/terminal.md +37 -0
- kollab-0.5.3/bundles/agents/coder/__init__.py +0 -0
- kollab-0.5.3/bundles/agents/coder/agent.json +36 -0
- kollab-0.5.3/bundles/agents/coder/sections/00-header.md +7 -0
- kollab-0.5.3/bundles/agents/coder/sections/README.md +86 -0
- kollab-0.5.3/bundles/agents/coder/system_prompt.md +36 -0
- kollab-0.5.3/bundles/agents/creative-writer/__init__.py +0 -0
- kollab-0.5.3/bundles/agents/creative-writer/agent.json +26 -0
- kollab-0.5.3/bundles/agents/creative-writer/character-development.md +1852 -0
- kollab-0.5.3/bundles/agents/creative-writer/dialogue-craft.md +1122 -0
- kollab-0.5.3/bundles/agents/creative-writer/plot-structure.md +1073 -0
- kollab-0.5.3/bundles/agents/creative-writer/revision-editing.md +1484 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/00-header.md +7 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/02-mindset.md +18 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/03-collaboration-modes.md +27 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/04-tool-calling.md +29 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/05-file-operations.md +29 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/06-craft-fundamentals.md +87 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/07-genre-craft.md +55 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/08-working-with-material.md +59 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/09-response-patterns.md +158 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/10-voice-matching.md +23 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/11-character-consistency.md +24 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/12-structural-awareness.md +13 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/13-project-organization.md +17 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/14-system-constraints.md +15 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/15-communication-style.md +17 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/16-unsure-protocol.md +8 -0
- kollab-0.5.3/bundles/agents/creative-writer/sections/17-final-reminders.md +12 -0
- kollab-0.5.3/bundles/agents/creative-writer/system_prompt.md +29 -0
- kollab-0.5.3/bundles/agents/creative-writer/worldbuilding.md +2049 -0
- kollab-0.5.3/bundles/agents/data-analyst/__init__.py +32 -0
- kollab-0.5.3/bundles/agents/data-analyst/agent.json +25 -0
- kollab-0.5.3/bundles/agents/data-analyst/data-visualization.md +992 -0
- kollab-0.5.3/bundles/agents/data-analyst/exploratory-data-analysis.md +1110 -0
- kollab-0.5.3/bundles/agents/data-analyst/pandas-data-manipulation.md +1081 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/00-header.md +7 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/02-data-workflow.md +17 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/03-tool-workflow.md +52 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/04-response-patterns.md +22 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/05-question-gate.md +47 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/06-investigation-examples.md +77 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/07-task-planning.md +23 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/08-data-expertise.md +64 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/09-data-quality-checklist.md +28 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/10-statistical-analysis.md +27 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/11-visualization.md +31 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/12-sql-optimization.md +40 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/13-error-handling.md +33 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/14-pandas-performance.md +26 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/15-matplotlib-style.md +31 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/16-communication-protocol.md +140 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/17-key-principles.md +8 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/18-quality-assurance.md +28 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/19-thoroughness-mandate.md +19 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/20-tool-execution-protocol.md +23 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/21-resource-limits.md +37 -0
- kollab-0.5.3/bundles/agents/data-analyst/sections/22-final-reminders.md +30 -0
- kollab-0.5.3/bundles/agents/data-analyst/sql-query-optimization.md +881 -0
- kollab-0.5.3/bundles/agents/data-analyst/statistical-analysis.md +1118 -0
- kollab-0.5.3/bundles/agents/data-analyst/system_prompt.md +33 -0
- kollab-0.5.3/bundles/agents/default/__init__.py +0 -0
- kollab-0.5.3/bundles/agents/default/agent.json +28 -0
- kollab-0.5.3/bundles/agents/default/sections/00-header.md +7 -0
- kollab-0.5.3/bundles/agents/default/sections/24-parallel-development.md +565 -0
- kollab-0.5.3/bundles/agents/default/sections/README.md +29 -0
- kollab-0.5.3/bundles/agents/default/system_prompt.md +1 -0
- kollab-0.5.3/bundles/agents/kollabor/__init__.py +0 -0
- kollab-0.5.3/bundles/agents/kollabor/agent.json +35 -0
- kollab-0.5.3/bundles/agents/kollabor/analyze-plugin-lifecycle.md +175 -0
- kollab-0.5.3/bundles/agents/kollabor/analyze-terminal-rendering.md +388 -0
- kollab-0.5.3/bundles/agents/kollabor/code-review.md +1092 -0
- kollab-0.5.3/bundles/agents/kollabor/debug-mcp-integration.md +521 -0
- kollab-0.5.3/bundles/agents/kollabor/debug-plugin-hooks.md +547 -0
- kollab-0.5.3/bundles/agents/kollabor/debugging.md +1102 -0
- kollab-0.5.3/bundles/agents/kollabor/dependency-management.md +1397 -0
- kollab-0.5.3/bundles/agents/kollabor/git-workflow.md +1099 -0
- kollab-0.5.3/bundles/agents/kollabor/inspect-llm-conversation.md +148 -0
- kollab-0.5.3/bundles/agents/kollabor/monitor-event-bus.md +558 -0
- kollab-0.5.3/bundles/agents/kollabor/profile-performance.md +576 -0
- kollab-0.5.3/bundles/agents/kollabor/refactoring.md +1454 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/00-header.md +10 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/02-expertise.md +22 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/03-agent-creation-methodology.md +86 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/04-skill-creation-methodology.md +67 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/05-response-patterns.md +105 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/06-agent-design-principles.md +51 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/07-templates.md +160 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/08-pitfalls.md +26 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/09-validation.md +35 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/10-collaboration.md +28 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/11-meta-knowledge.md +121 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/12-example.md +38 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/13-tool-execution.md +16 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/14-final-guidance.md +29 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/16-kollabor-architecture.md +245 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/17-plugin-development.md +365 -0
- kollab-0.5.3/bundles/agents/kollabor/sections/18-status-widget-development.md +377 -0
- kollab-0.5.3/bundles/agents/kollabor/system_prompt.md +28 -0
- kollab-0.5.3/bundles/agents/kollabor/trace-command-execution.md +178 -0
- kollab-0.5.3/bundles/agents/kollabor/validate-config.md +880 -0
- kollab-0.5.3/bundles/agents/native/__init__.py +0 -0
- kollab-0.5.3/bundles/agents/native/agent.json +26 -0
- kollab-0.5.3/bundles/agents/native/sections/00-header.md +7 -0
- kollab-0.5.3/bundles/agents/native/sections/README.md +86 -0
- kollab-0.5.3/bundles/agents/native/system_prompt.md +36 -0
- kollab-0.5.3/bundles/agents/research/__init__.py +0 -0
- kollab-0.5.3/bundles/agents/research/agent.json +25 -0
- kollab-0.5.3/bundles/agents/research/sections/00-header.md +8 -0
- kollab-0.5.3/bundles/agents/research/sections/02-research-mindset.md +23 -0
- kollab-0.5.3/bundles/agents/research/sections/03-tools-reference.md +34 -0
- kollab-0.5.3/bundles/agents/research/sections/04-investigation-patterns.md +231 -0
- kollab-0.5.3/bundles/agents/research/sections/05-investigation-techniques.md +26 -0
- kollab-0.5.3/bundles/agents/research/sections/06-reporting-format.md +25 -0
- kollab-0.5.3/bundles/agents/research/sections/07-boundaries.md +16 -0
- kollab-0.5.3/bundles/agents/research/sections/08-when-to-use.md +19 -0
- kollab-0.5.3/bundles/agents/research/sections/09-system-constraints.md +12 -0
- kollab-0.5.3/bundles/agents/research/sections/10-investigation-depth.md +17 -0
- kollab-0.5.3/bundles/agents/research/sections/11-communication-style.md +13 -0
- kollab-0.5.3/bundles/agents/research/sections/12-final-reminders.md +12 -0
- kollab-0.5.3/bundles/agents/research/system_prompt.md +24 -0
- kollab-0.5.3/bundles/agents/system/hub-collaboration.md +84 -0
- kollab-0.5.3/bundles/agents/system/hub-context.md +4 -0
- kollab-0.5.3/bundles/agents/tech-dude/agent.json +25 -0
- kollab-0.5.3/bundles/agents/tech-dude/experimentation.md +839 -0
- kollab-0.5.3/bundles/agents/tech-dude/knowledge-management.md +1093 -0
- kollab-0.5.3/bundles/agents/tech-dude/learning-roadmap.md +980 -0
- kollab-0.5.3/bundles/agents/tech-dude/sections/00-header.md +29 -0
- kollab-0.5.3/bundles/agents/tech-dude/sections/02-tool-guidelines.md +19 -0
- kollab-0.5.3/bundles/agents/tech-dude/sections/03-main-content.md +605 -0
- kollab-0.5.3/bundles/agents/tech-dude/sections/16-final-reminders.md +20 -0
- kollab-0.5.3/bundles/agents/tech-dude/system_prompt.md +11 -0
- kollab-0.5.3/bundles/agents/tech-dude/tech-research.md +695 -0
- kollab-0.5.3/bundles/agents/tech-dude/trend-tracking.md +750 -0
- kollab-0.5.3/bundles/agents/technical-writer/__init__.py +0 -0
- kollab-0.5.3/bundles/agents/technical-writer/agent.json +27 -0
- kollab-0.5.3/bundles/agents/technical-writer/api-documentation.md +2328 -0
- kollab-0.5.3/bundles/agents/technical-writer/changelog-management.md +1181 -0
- kollab-0.5.3/bundles/agents/technical-writer/readme-writing.md +1360 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/00-header.md +8 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/02-mindset.md +10 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/03-documentation-types.md +28 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/04-file-operations.md +30 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/05-writing-principles.md +30 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/06-readme-structure.md +67 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/07-api-documentation.md +28 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/08-code-examples.md +26 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/09-response-patterns.md +179 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/10-changelog-format.md +26 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/11-structured-documentation.md +20 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/12-common-mistakes.md +13 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/13-markdown-best-practices.md +34 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/14-docstring-conventions.md +36 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/15-verifying-documentation.md +18 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/16-system-constraints.md +10 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/17-communication-style.md +14 -0
- kollab-0.5.3/bundles/agents/technical-writer/sections/18-final-reminders.md +12 -0
- kollab-0.5.3/bundles/agents/technical-writer/style-guide.md +1410 -0
- kollab-0.5.3/bundles/agents/technical-writer/system_prompt.md +29 -0
- kollab-0.5.3/bundles/agents/technical-writer/tutorial-creation.md +1448 -0
- kollab-0.5.3/bundles/layouts/README.md +57 -0
- kollab-0.5.3/bundles/layouts/compact.json +41 -0
- kollab-0.5.3/bundles/layouts/default.json +57 -0
- kollab-0.5.3/bundles/layouts/developer.json +47 -0
- kollab-0.5.3/bundles/skills/analyze-plugin-lifecycle/SKILL.md +180 -0
- kollab-0.5.3/bundles/skills/analyze-terminal-rendering/SKILL.md +391 -0
- kollab-0.5.3/bundles/skills/api-documentation/SKILL.md +2331 -0
- kollab-0.5.3/bundles/skills/api-integration/SKILL.md +2153 -0
- kollab-0.5.3/bundles/skills/architecture-mapping/SKILL.md +1102 -0
- kollab-0.5.3/bundles/skills/changelog-management/SKILL.md +1184 -0
- kollab-0.5.3/bundles/skills/character-development/SKILL.md +1855 -0
- kollab-0.5.3/bundles/skills/cli-pretty/SKILL.md +768 -0
- kollab-0.5.3/bundles/skills/code-review/SKILL.md +1095 -0
- kollab-0.5.3/bundles/skills/codebase-analysis/SKILL.md +1080 -0
- kollab-0.5.3/bundles/skills/data-visualization/SKILL.md +995 -0
- kollab-0.5.3/bundles/skills/database-design/SKILL.md +1528 -0
- kollab-0.5.3/bundles/skills/dead-code/SKILL.md +797 -0
- kollab-0.5.3/bundles/skills/debug-mcp-integration/SKILL.md +524 -0
- kollab-0.5.3/bundles/skills/debug-plugin-hooks/SKILL.md +550 -0
- kollab-0.5.3/bundles/skills/debugging/SKILL.md +1105 -0
- kollab-0.5.3/bundles/skills/dependency-audit/SKILL.md +1030 -0
- kollab-0.5.3/bundles/skills/dependency-management/SKILL.md +1400 -0
- kollab-0.5.3/bundles/skills/dialogue-craft/SKILL.md +1125 -0
- kollab-0.5.3/bundles/skills/docx/SKILL.md +590 -0
- kollab-0.5.3/bundles/skills/docx/scripts/__init__.py +1 -0
- kollab-0.5.3/bundles/skills/docx/scripts/accept_changes.py +135 -0
- kollab-0.5.3/bundles/skills/docx/scripts/comment.py +318 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/helpers/__init__.py +0 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/pack.py +159 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/soffice.py +183 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/unpack.py +132 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/validate.py +111 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/validators/__init__.py +15 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/validators/base.py +847 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/validators/docx.py +446 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/validators/pptx.py +275 -0
- kollab-0.5.3/bundles/skills/docx/scripts/office/validators/redlining.py +247 -0
- kollab-0.5.3/bundles/skills/experimentation/SKILL.md +842 -0
- kollab-0.5.3/bundles/skills/exploratory-data-analysis/SKILL.md +1113 -0
- kollab-0.5.3/bundles/skills/explore-agent-system/SKILL.md +588 -0
- kollab-0.5.3/bundles/skills/frontend-design/SKILL.md +42 -0
- kollab-0.5.3/bundles/skills/git-workflow/SKILL.md +1102 -0
- kollab-0.5.3/bundles/skills/inspect-llm-conversation/SKILL.md +153 -0
- kollab-0.5.3/bundles/skills/knowledge-management/SKILL.md +1096 -0
- kollab-0.5.3/bundles/skills/learning-roadmap/SKILL.md +983 -0
- kollab-0.5.3/bundles/skills/mcp-builder/SKILL.md +236 -0
- kollab-0.5.3/bundles/skills/mcp-builder/reference/evaluation.md +602 -0
- kollab-0.5.3/bundles/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- kollab-0.5.3/bundles/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- kollab-0.5.3/bundles/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- kollab-0.5.3/bundles/skills/mcp-builder/scripts/connections.py +151 -0
- kollab-0.5.3/bundles/skills/mcp-builder/scripts/evaluation.py +373 -0
- kollab-0.5.3/bundles/skills/monitor-event-bus/SKILL.md +561 -0
- kollab-0.5.3/bundles/skills/pandas-data-manipulation/SKILL.md +1084 -0
- kollab-0.5.3/bundles/skills/pdf/SKILL.md +314 -0
- kollab-0.5.3/bundles/skills/pdf/forms.md +294 -0
- kollab-0.5.3/bundles/skills/pdf/reference.md +612 -0
- kollab-0.5.3/bundles/skills/pdf/scripts/check_bounding_boxes.py +65 -0
- kollab-0.5.3/bundles/skills/pdf/scripts/check_fillable_fields.py +11 -0
- kollab-0.5.3/bundles/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
- kollab-0.5.3/bundles/skills/pdf/scripts/create_validation_image.py +37 -0
- kollab-0.5.3/bundles/skills/pdf/scripts/extract_form_field_info.py +122 -0
- kollab-0.5.3/bundles/skills/pdf/scripts/extract_form_structure.py +115 -0
- kollab-0.5.3/bundles/skills/pdf/scripts/fill_fillable_fields.py +98 -0
- kollab-0.5.3/bundles/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- kollab-0.5.3/bundles/skills/performance-profiling/SKILL.md +1050 -0
- kollab-0.5.3/bundles/skills/plot-structure/SKILL.md +1076 -0
- kollab-0.5.3/bundles/skills/pptx/SKILL.md +232 -0
- kollab-0.5.3/bundles/skills/pptx/editing.md +205 -0
- kollab-0.5.3/bundles/skills/pptx/pptxgenjs.md +420 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/__init__.py +0 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/add_slide.py +195 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/clean.py +286 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/helpers/__init__.py +0 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/pack.py +159 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/soffice.py +183 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/unpack.py +132 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/validate.py +111 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/validators/__init__.py +15 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/validators/base.py +847 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/validators/docx.py +446 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/validators/pptx.py +275 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/office/validators/redlining.py +247 -0
- kollab-0.5.3/bundles/skills/pptx/scripts/thumbnail.py +289 -0
- kollab-0.5.3/bundles/skills/profile-performance/SKILL.md +579 -0
- kollab-0.5.3/bundles/skills/readme-writing/SKILL.md +1363 -0
- kollab-0.5.3/bundles/skills/refactoring/SKILL.md +1457 -0
- kollab-0.5.3/bundles/skills/revision-editing/SKILL.md +1487 -0
- kollab-0.5.3/bundles/skills/scan-project/SKILL.md +161 -0
- kollab-0.5.3/bundles/skills/security-hardening/SKILL.md +1735 -0
- kollab-0.5.3/bundles/skills/security-review/SKILL.md +1362 -0
- kollab-0.5.3/bundles/skills/skill-creator/SKILL.md +485 -0
- kollab-0.5.3/bundles/skills/skill-creator/agents/analyzer.md +274 -0
- kollab-0.5.3/bundles/skills/skill-creator/agents/comparator.md +202 -0
- kollab-0.5.3/bundles/skills/skill-creator/agents/grader.md +223 -0
- kollab-0.5.3/bundles/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- kollab-0.5.3/bundles/skills/skill-creator/references/schemas.md +430 -0
- kollab-0.5.3/bundles/skills/skill-creator/scripts/__init__.py +0 -0
- kollab-0.5.3/bundles/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- kollab-0.5.3/bundles/skills/skill-creator/scripts/generate_report.py +326 -0
- kollab-0.5.3/bundles/skills/skill-creator/scripts/improve_description.py +247 -0
- kollab-0.5.3/bundles/skills/skill-creator/scripts/package_skill.py +136 -0
- kollab-0.5.3/bundles/skills/skill-creator/scripts/quick_validate.py +103 -0
- kollab-0.5.3/bundles/skills/skill-creator/scripts/run_eval.py +310 -0
- kollab-0.5.3/bundles/skills/skill-creator/scripts/run_loop.py +328 -0
- kollab-0.5.3/bundles/skills/skill-creator/scripts/utils.py +47 -0
- kollab-0.5.3/bundles/skills/sql-query-optimization/SKILL.md +884 -0
- kollab-0.5.3/bundles/skills/statistical-analysis/SKILL.md +1121 -0
- kollab-0.5.3/bundles/skills/style-guide/SKILL.md +1413 -0
- kollab-0.5.3/bundles/skills/tdd/SKILL.md +1370 -0
- kollab-0.5.3/bundles/skills/tech-research/SKILL.md +698 -0
- kollab-0.5.3/bundles/skills/trace-command-execution/SKILL.md +181 -0
- kollab-0.5.3/bundles/skills/trend-tracking/SKILL.md +753 -0
- kollab-0.5.3/bundles/skills/tutorial-creation/SKILL.md +1451 -0
- kollab-0.5.3/bundles/skills/validate-config/SKILL.md +883 -0
- kollab-0.5.3/bundles/skills/webapp-testing/SKILL.md +96 -0
- kollab-0.5.3/bundles/skills/webapp-testing/examples/console_logging.py +35 -0
- kollab-0.5.3/bundles/skills/webapp-testing/examples/element_discovery.py +40 -0
- kollab-0.5.3/bundles/skills/webapp-testing/examples/static_html_automation.py +33 -0
- kollab-0.5.3/bundles/skills/webapp-testing/scripts/with_server.py +106 -0
- kollab-0.5.3/bundles/skills/worldbuilding/SKILL.md +2052 -0
- kollab-0.5.3/bundles/skills/xlsx/SKILL.md +292 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/pack.py +159 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/soffice.py +183 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/unpack.py +132 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/validate.py +111 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/validators/__init__.py +15 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/validators/base.py +847 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/validators/docx.py +446 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/validators/pptx.py +275 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/office/validators/redlining.py +247 -0
- kollab-0.5.3/bundles/skills/xlsx/scripts/recalc.py +184 -0
- kollab-0.5.3/bundles/themes/README.md +43 -0
- kollab-0.5.3/bundles/themes/autumn.json +18 -0
- kollab-0.5.3/bundles/themes/spring.json +18 -0
- kollab-0.5.3/bundles/themes/summer.json +18 -0
- kollab-0.5.3/bundles/themes/winter.json +18 -0
- kollab-0.5.3/bundles/widgets/README.md +96 -0
- kollab-0.5.3/bundles/widgets/branch-status.sh +31 -0
- kollab-0.5.3/bundles/widgets/clock.sh +9 -0
- kollab-0.5.3/bundles/widgets/date.sh +9 -0
- kollab-0.5.3/bundles/widgets/files-changed.sh +31 -0
- kollab-0.5.3/bundles/widgets/last-commit.sh +20 -0
- kollab-0.5.3/bundles/widgets/life-bar.sh +48 -0
- kollab-0.5.3/bundles/widgets/motivation.sh +25 -0
- kollab-0.5.3/bundles/widgets/pomodoro.sh +57 -0
- kollab-0.5.3/bundles/widgets/session-time.sh +32 -0
- kollab-0.5.3/bundles/widgets/uptime.sh +31 -0
- kollab-0.5.3/bundles/widgets/weather.sh +18 -0
- kollab-0.5.3/docs/README.md +48 -0
- kollab-0.5.3/docs/architecture/agent-designation-merge-review-1.md +591 -0
- kollab-0.5.3/docs/architecture/agent-designation-merge-review-2.md +635 -0
- kollab-0.5.3/docs/architecture/agent-designation-merge.md +247 -0
- kollab-0.5.3/docs/architecture/agent-hub-unification.md +1464 -0
- kollab-0.5.3/docs/architecture/altview-framework.md +425 -0
- kollab-0.5.3/docs/architecture/deploy-handoff-v0.5.0.md +441 -0
- kollab-0.5.3/docs/architecture/event-system.md +248 -0
- kollab-0.5.3/docs/architecture/hub-completion-spec.md +144 -0
- kollab-0.5.3/docs/architecture/hub-test-results-2026-04-05.md +89 -0
- kollab-0.5.3/docs/architecture/kollabor-mesh-spec.md +1171 -0
- kollab-0.5.3/docs/architecture/overview.md +161 -0
- kollab-0.5.3/docs/architecture/terminal-rendering.md +270 -0
- kollab-0.5.3/docs/blog/how-the-hub-was-born.md +181 -0
- kollab-0.5.3/docs/configuration.md +256 -0
- kollab-0.5.3/docs/faq.md +241 -0
- kollab-0.5.3/docs/features/agents.md +241 -0
- kollab-0.5.3/docs/features/config-hooks.md +342 -0
- kollab-0.5.3/docs/features/context-compaction-forked-file-aware-spec.md +170 -0
- kollab-0.5.3/docs/features/conversations.md +88 -0
- kollab-0.5.3/docs/features/dynamic-system-prompts.md +320 -0
- kollab-0.5.3/docs/features/kollaborate.md +541 -0
- kollab-0.5.3/docs/features/mcp.md +295 -0
- kollab-0.5.3/docs/features/permissions.md +198 -0
- kollab-0.5.3/docs/features/pipe-mode.md +110 -0
- kollab-0.5.3/docs/features/profiles.md +310 -0
- kollab-0.5.3/docs/features/question-gate-protocol.md +168 -0
- kollab-0.5.3/docs/features/slash-commands.md +165 -0
- kollab-0.5.3/docs/features/theming.md +285 -0
- kollab-0.5.3/docs/features/tmux.md +72 -0
- kollab-0.5.3/docs/features/tools.md +506 -0
- kollab-0.5.3/docs/getting-started.md +200 -0
- kollab-0.5.3/docs/guides/hub-quick-start.md +218 -0
- kollab-0.5.3/docs/guides/telegram-bridge-setup.md +188 -0
- kollab-0.5.3/docs/mcp/MCP_SERVER_EXAMPLES.md +588 -0
- kollab-0.5.3/docs/mcp/MCP_SETUP.md +464 -0
- kollab-0.5.3/docs/mcp/local-server-connection-fix.md +184 -0
- kollab-0.5.3/docs/memos/2026-04-07-daemon-first.md +112 -0
- kollab-0.5.3/docs/plugins/development.md +490 -0
- kollab-0.5.3/docs/plugins/hooks-reference.md +610 -0
- kollab-0.5.3/docs/plugins/overview.md +167 -0
- kollab-0.5.3/docs/providers.md +363 -0
- kollab-0.5.3/docs/reference/commands.md +836 -0
- kollab-0.5.3/docs/specs/daemon-first-architecture.md +424 -0
- kollab-0.5.3/docs/specs/hub-coordinator-routing.md +236 -0
- kollab-0.5.3/docs/specs/secrets-management.md +294 -0
- kollab-0.5.3/docs/troubleshooting.md +257 -0
- kollab-0.5.3/kollab.egg-info/PKG-INFO +335 -0
- kollab-0.5.3/kollab.egg-info/SOURCES.txt +738 -0
- kollab-0.5.3/kollab.egg-info/dependency_links.txt +1 -0
- kollab-0.5.3/kollab.egg-info/entry_points.txt +2 -0
- kollab-0.5.3/kollab.egg-info/requires.txt +18 -0
- kollab-0.5.3/kollab.egg-info/top_level.txt +11 -0
- kollab-0.5.3/kollabor/__init__.py +5 -0
- kollab-0.5.3/kollabor/altview/__init__.py +0 -0
- kollab-0.5.3/kollabor/altview/command_integration.py +423 -0
- kollab-0.5.3/kollabor/application.py +2417 -0
- kollab-0.5.3/kollabor/attach_client.py +261 -0
- kollab-0.5.3/kollabor/cli.py +1493 -0
- kollab-0.5.3/kollabor/commands/__init__.py +1 -0
- kollab-0.5.3/kollabor/commands/executor.py +296 -0
- kollab-0.5.3/kollabor/commands/mcp_command.py +810 -0
- kollab-0.5.3/kollabor/commands/parser.py +192 -0
- kollab-0.5.3/kollabor/commands/profile_command.py +783 -0
- kollab-0.5.3/kollabor/commands/registry.py +445 -0
- kollab-0.5.3/kollabor/commands/system_commands/__init__.py +9 -0
- kollab-0.5.3/kollabor/commands/system_commands/base.py +75 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/__init__.py +19 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/agent.py +648 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/agent_actions.py +268 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/directory.py +333 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/login.py +311 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/model.py +346 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/model_actions.py +64 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/profile.py +390 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/profile_actions.py +342 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/skill_actions.py +278 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/skills.py +793 -0
- kollab-0.5.3/kollabor/commands/system_commands/handlers/system.py +687 -0
- kollab-0.5.3/kollabor/commands/system_commands/plugin.py +448 -0
- kollab-0.5.3/kollabor/commands/ui_commands.py +221 -0
- kollab-0.5.3/kollabor/config_hooks.py +472 -0
- kollab-0.5.3/kollabor/daemon.py +174 -0
- kollab-0.5.3/kollabor/fullscreen/command_integration.py +444 -0
- kollab-0.5.3/kollabor/llm/__init__.py +9 -0
- kollab-0.5.3/kollabor/llm/hook_system.py +431 -0
- kollab-0.5.3/kollabor/llm/llm_coordinator.py +1147 -0
- kollab-0.5.3/kollabor/llm/message_handler.py +406 -0
- kollab-0.5.3/kollabor/llm/permissions/__init__.py +46 -0
- kollab-0.5.3/kollabor/llm/permissions/hook.py +99 -0
- kollab-0.5.3/kollabor/llm/session_manager.py +203 -0
- kollab-0.5.3/kollabor/llm/status_service.py +191 -0
- kollab-0.5.3/kollabor/llm/streaming_handler.py +179 -0
- kollab-0.5.3/kollabor/logging/__init__.py +21 -0
- kollab-0.5.3/kollabor/logging/setup.py +227 -0
- kollab-0.5.3/kollabor/quotes.py +111 -0
- kollab-0.5.3/kollabor/updates/__init__.py +10 -0
- kollab-0.5.3/kollabor/updates/version_check_service.py +350 -0
- kollab-0.5.3/kollabor/updates/version_comparator.py +104 -0
- kollab-0.5.3/kollabor/version.py +50 -0
- kollab-0.5.3/kollabor_cli_main.py +19 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/__init__.py +75 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/agent_manager.py +1689 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/background_task_manager.py +505 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/file_operations_executor.py +1355 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/mcp_integration.py +1291 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/mcp_manager.py +381 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/mentiko_adapter.py +203 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/native_tools_handler.py +196 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/permissions/__init__.py +44 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/permissions/manager.py +712 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/permissions/response_handler.py +106 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/permissions/risk_assessor.py +109 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/process_manager.py +763 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/py.typed +0 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/queue_processor.py +819 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/runtime.py +622 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/shell_command_service.py +392 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/shell_executor.py +365 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/shell_utils.py +230 -0
- kollab-0.5.3/packages/kollabor-agent/src/kollabor_agent/tool_executor.py +894 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/__init__.py +84 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/adapters/__init__.py +44 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/adapters/anthropic_adapter.py +443 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/adapters/base.py +241 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/adapters/openai_adapter.py +332 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/api_communication_service.py +857 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/context_service.py +354 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/conversation_logger.py +889 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/conversation_manager.py +953 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/model_router.py +239 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/oauth/__init__.py +10 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/oauth/openai_oauth.py +566 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/oauth/token_storage.py +173 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/profile_manager.py +1572 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/profile_validator.py +569 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/prompt_renderer.py +979 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/__init__.py +111 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/anthropic_provider.py +355 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/azure_provider.py +256 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/base.py +308 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/custom_provider.py +362 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/errors.py +705 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/gemini_provider.py +406 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/gemini_transformer.py +205 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/models.py +525 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/openai_provider.py +345 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/openai_responses_provider.py +777 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/openai_responses_transformer.py +367 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/openrouter_provider.py +365 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/registry.py +509 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/security.py +1059 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/providers/transformers.py +883 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/py.typed +0 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/response_parser.py +1395 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/response_processor.py +382 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/session_naming.py +177 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/session_parser.py +124 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/streaming_thinking_parser.py +152 -0
- kollab-0.5.3/packages/kollabor-ai/src/kollabor_ai/system_prompt_builder.py +331 -0
- kollab-0.5.3/packages/kollabor-config/src/kollabor_config/__init__.py +54 -0
- kollab-0.5.3/packages/kollabor-config/src/kollabor_config/config_utils.py +1128 -0
- kollab-0.5.3/packages/kollabor-config/src/kollabor_config/llm_task_config.py +135 -0
- kollab-0.5.3/packages/kollabor-config/src/kollabor_config/loader.py +982 -0
- kollab-0.5.3/packages/kollabor-config/src/kollabor_config/manager.py +194 -0
- kollab-0.5.3/packages/kollabor-config/src/kollabor_config/migration.py +596 -0
- kollab-0.5.3/packages/kollabor-config/src/kollabor_config/plugin_config_manager.py +388 -0
- kollab-0.5.3/packages/kollabor-config/src/kollabor_config/plugin_schema.py +474 -0
- kollab-0.5.3/packages/kollabor-config/src/kollabor_config/py.typed +0 -0
- kollab-0.5.3/packages/kollabor-config/src/kollabor_config/service.py +468 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/__init__.py +6 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/__main__.py +79 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/auth.py +48 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/hub_bridge.py +170 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/py.typed +0 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/routes/__init__.py +0 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/routes/hub.py +156 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/routes/hub_ws.py +185 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/routes/mcp.py +325 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/routes/messages.py +49 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/routes/permissions.py +85 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/routes/profiles.py +337 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/routes/sessions.py +483 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/server.py +196 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/session.py +391 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/sse.py +136 -0
- kollab-0.5.3/packages/kollabor-engine/src/kollabor_engine/turn_runner.py +327 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/__init__.py +89 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/bus.py +183 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/data_models.py +76 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/dict_utils.py +212 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/error_utils.py +307 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/executor.py +335 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/hook_adapter.py +276 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/models.py +360 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/permissions_config.py +46 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/permissions_models.py +253 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/processor.py +221 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/py.typed +0 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/ready_message.py +123 -0
- kollab-0.5.3/packages/kollabor-events/src/kollabor_events/registry.py +318 -0
- kollab-0.5.3/packages/kollabor-plugins/src/kollabor_plugins/__init__.py +33 -0
- kollab-0.5.3/packages/kollabor-plugins/src/kollabor_plugins/base.py +136 -0
- kollab-0.5.3/packages/kollabor-plugins/src/kollabor_plugins/collector.py +79 -0
- kollab-0.5.3/packages/kollabor-plugins/src/kollabor_plugins/discovery.py +574 -0
- kollab-0.5.3/packages/kollabor-plugins/src/kollabor_plugins/factory.py +259 -0
- kollab-0.5.3/packages/kollabor-plugins/src/kollabor_plugins/plugin_sdk.py +427 -0
- kollab-0.5.3/packages/kollabor-plugins/src/kollabor_plugins/plugin_utils.py +285 -0
- kollab-0.5.3/packages/kollabor-plugins/src/kollabor_plugins/py.typed +0 -0
- kollab-0.5.3/packages/kollabor-plugins/src/kollabor_plugins/registry.py +144 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/__init__.py +308 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/altview/__init__.py +21 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/altview/base.py +309 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/altview/display_queue.py +152 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/altview/session.py +304 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/altview/stack_manager.py +297 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/buffer_manager.py +421 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/clean_renderer.py +271 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/config_merger.py +201 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/config_widgets.py +610 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/design_system/__init__.py +174 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/design_system/border_style.py +244 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/design_system/color_mode.py +156 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/design_system/components.py +833 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/design_system/gradient.py +304 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/design_system/icons.py +273 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/design_system/inline_widgets.py +257 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/design_system/theme.py +338 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/design_system/ui_components.py +288 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/display_tap.py +88 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/effects/__init__.py +1 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/fullscreen/__init__.py +17 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/fullscreen/components/__init__.py +26 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/fullscreen/components/animation.py +273 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/fullscreen/components/drawing.py +205 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/fullscreen/components/matrix_components.py +245 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/fullscreen/components/space_shooter_components.py +680 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/fullscreen/manager.py +318 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/fullscreen/plugin.py +211 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/fullscreen/renderer.py +344 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/fullscreen/session.py +459 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input/__init__.py +25 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input/command_mode_handler.py +694 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input/display_controller.py +201 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input/hook_registrar.py +260 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input/input_loop_manager.py +502 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input/key_press_handler.py +766 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input/modal_controller.py +1126 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input/paste_processor.py +335 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input/status_modal_renderer.py +125 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input_errors.py +316 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/input_handler.py +491 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/key_parser.py +378 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/menu_renderer.py +737 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/message_coordinator.py +696 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/message_display_service.py +405 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/message_renderer.py +688 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/modals/__init__.py +210 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/modals/modal_actions.py +185 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/modals/modal_overlay_renderer.py +314 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/modals/modal_renderer.py +1280 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/modals/modal_state_manager.py +488 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/profile_modal_builder.py +516 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/py.typed +0 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/render_layout.py +824 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/render_loop.py +353 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/renderer_protocol.py +239 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/simple_renderer.py +94 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/__init__.py +212 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/altview_widget.py +117 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/constants.py +27 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/core_widget_modals.py +534 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/core_widgets.py +1738 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/help_system.py +327 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/inline_editor_service.py +405 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/inline_editors.py +700 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/interaction_handler.py +515 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/interactive_widgets.py +575 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/layout_editing.py +640 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/layout_manager.py +847 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/layout_renderer.py +968 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/mcp_status_view.py +178 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/modal_presenter.py +869 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/navigation_manager.py +1416 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/navigation_state.py +629 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/permission_status_view.py +242 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/plugin_api.py +129 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/script_action_handlers.py +660 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/script_modal_handlers.py +522 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/script_refresh_scheduler.py +581 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/script_widgets.py +1038 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/status_menu_renderer.py +63 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/system_monitor.py +375 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/toggle_handler.py +302 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/utils.py +88 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/widget_picker.py +536 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/status/widget_registry.py +340 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/terminal_renderer.py +969 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/terminal_state.py +778 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/thinking_display.py +121 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/tool_display.py +729 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/tool_spinner.py +130 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/visual_effects.py +1928 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widget_showcase.py +671 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/__init__.py +58 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/base_widget.py +279 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/checkbox.py +160 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/dropdown.py +205 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/file_browser.py +501 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/label.py +164 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/multi_select.py +341 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/progress.py +437 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/searchable_dropdown.py +425 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/slider.py +350 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/spin_box.py +426 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/text_area.py +522 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/text_input.py +285 -0
- kollab-0.5.3/packages/kollabor-tui/src/kollabor_tui/widgets/tree_view.py +646 -0
- kollab-0.5.3/plugins/__init__.py +1 -0
- kollab-0.5.3/plugins/agent_orchestrator/__init__.py +41 -0
- kollab-0.5.3/plugins/agent_orchestrator/activity_monitor.py +235 -0
- kollab-0.5.3/plugins/agent_orchestrator/file_attacher.py +77 -0
- kollab-0.5.3/plugins/agent_orchestrator/message_injector.py +137 -0
- kollab-0.5.3/plugins/agent_orchestrator/models.py +64 -0
- kollab-0.5.3/plugins/agent_orchestrator/orchestrator.py +692 -0
- kollab-0.5.3/plugins/agent_orchestrator/plugin.py +2165 -0
- kollab-0.5.3/plugins/agent_orchestrator/ring_buffer.py +44 -0
- kollab-0.5.3/plugins/agent_orchestrator/xml_parser.py +238 -0
- kollab-0.5.3/plugins/agent_orchestrator_plugin.py +9 -0
- kollab-0.5.3/plugins/altview/__init__.py +0 -0
- kollab-0.5.3/plugins/altview/config_altview.py +689 -0
- kollab-0.5.3/plugins/altview/conversations_altview.py +488 -0
- kollab-0.5.3/plugins/altview/example_altview.py +341 -0
- kollab-0.5.3/plugins/altview/hub_console_altview.py +538 -0
- kollab-0.5.3/plugins/altview/hub_feed_altview.py +141 -0
- kollab-0.5.3/plugins/altview/login_altview.py +324 -0
- kollab-0.5.3/plugins/altview/matrix_altview.py +74 -0
- kollab-0.5.3/plugins/altview/mcp_wizard_altview.py +355 -0
- kollab-0.5.3/plugins/altview/widget_picker_altview.py +525 -0
- kollab-0.5.3/plugins/context_compaction_plugin.py +963 -0
- kollab-0.5.3/plugins/deep_thought/__init__.py +12 -0
- kollab-0.5.3/plugins/deep_thought/child_reporter.py +105 -0
- kollab-0.5.3/plugins/deep_thought/methodologies.py +166 -0
- kollab-0.5.3/plugins/deep_thought/orchestrator.py +296 -0
- kollab-0.5.3/plugins/deep_thought/plugin.py +659 -0
- kollab-0.5.3/plugins/deep_thought/socket_server.py +310 -0
- kollab-0.5.3/plugins/deep_thought/synthesizer.py +73 -0
- kollab-0.5.3/plugins/example_context_plugin.py +173 -0
- kollab-0.5.3/plugins/fullscreen/__init__.py +5 -0
- kollab-0.5.3/plugins/fullscreen/conversations_plugin.py +507 -0
- kollab-0.5.3/plugins/fullscreen/example_plugin.py +1486 -0
- kollab-0.5.3/plugins/fullscreen/matrix_plugin.py +135 -0
- kollab-0.5.3/plugins/fullscreen/space_shooter_plugin.py +134 -0
- kollab-0.5.3/plugins/hook_monitoring_plugin.py +2101 -0
- kollab-0.5.3/plugins/hub/__init__.py +13 -0
- kollab-0.5.3/plugins/hub/change_feed.py +369 -0
- kollab-0.5.3/plugins/hub/coordinator.py +289 -0
- kollab-0.5.3/plugins/hub/feed.py +235 -0
- kollab-0.5.3/plugins/hub/messaging_bridge.py +421 -0
- kollab-0.5.3/plugins/hub/messenger.py +614 -0
- kollab-0.5.3/plugins/hub/models.py +295 -0
- kollab-0.5.3/plugins/hub/notifier.py +230 -0
- kollab-0.5.3/plugins/hub/nudge_engine.py +195 -0
- kollab-0.5.3/plugins/hub/org_launcher.py +309 -0
- kollab-0.5.3/plugins/hub/organizations/engineering.json +79 -0
- kollab-0.5.3/plugins/hub/organizations/startup.json +58 -0
- kollab-0.5.3/plugins/hub/plugin.py +4379 -0
- kollab-0.5.3/plugins/hub/presence.py +384 -0
- kollab-0.5.3/plugins/hub/scratchpad.py +76 -0
- kollab-0.5.3/plugins/hub/session_state.py +315 -0
- kollab-0.5.3/plugins/hub/task_ledger.py +301 -0
- kollab-0.5.3/plugins/hub/vault.py +409 -0
- kollab-0.5.3/plugins/mcp_plugin.py +177 -0
- kollab-0.5.3/plugins/mcp_status_plugin.py +461 -0
- kollab-0.5.3/plugins/modern_input/__init__.py +11 -0
- kollab-0.5.3/plugins/modern_input/config.py +49 -0
- kollab-0.5.3/plugins/modern_input/cursor_manager.py +26 -0
- kollab-0.5.3/plugins/modern_input/renderer.py +145 -0
- kollab-0.5.3/plugins/modern_input_plugin.py +217 -0
- kollab-0.5.3/plugins/resume_conversation_plugin.py +1818 -0
- kollab-0.5.3/plugins/save_conversation_plugin.py +610 -0
- kollab-0.5.3/plugins/terminal_altview.py +283 -0
- kollab-0.5.3/plugins/terminal_plugin.py +878 -0
- kollab-0.5.3/pyproject.toml +152 -0
- kollab-0.5.3/requirements.txt +13 -0
- kollab-0.5.3/setup.cfg +4 -0
- kollab-0.5.3/setup.py +12 -0
- kollab-0.5.3/tests/test_engine_health_api.py +89 -0
- kollab-0.5.3/tests/test_hub_modules.py +452 -0
kollab-0.5.3/CLAUDE.md
ADDED
|
@@ -0,0 +1,786 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
**Kollabor CLI Interface** - Terminal-based LLM chat application where **everything has hooks**. Every action triggers customizable hooks that plugins can attach to for complete customization.
|
|
8
|
+
|
|
9
|
+
## Architecture
|
|
10
|
+
|
|
11
|
+
Monorepo with extracted packages:
|
|
12
|
+
- **Core Application** (`kollabor/application.py`): Main orchestrator
|
|
13
|
+
- **Event System** (`packages/kollabor-events/`): Event bus + hook system (`kollabor_events`)
|
|
14
|
+
- **LLM AI** (`packages/kollabor-ai/`): API, conversation, model routing (`kollabor_ai`)
|
|
15
|
+
- **Terminal UI** (`packages/kollabor-tui/`): Rendering, input, widgets (`kollabor_tui`)
|
|
16
|
+
- **Agent System** (`packages/kollabor-agent/`): Shell execution, agent runtime (`kollabor_agent`)
|
|
17
|
+
- **Configuration** (`packages/kollabor-config/`): Config management (`kollabor_config`)
|
|
18
|
+
- **Plugin System** (`packages/kollabor-plugins/`, `plugins/`): Discovery and loading (`kollabor_plugins`)
|
|
19
|
+
- **LLM Orchestration** (`kollabor/llm/`): Coordinator, permissions, streaming
|
|
20
|
+
- **Commands** (`kollabor/commands/`): Slash command registry and handlers
|
|
21
|
+
|
|
22
|
+
## Key Components
|
|
23
|
+
|
|
24
|
+
### LLM AI Package (`kollabor_ai`)
|
|
25
|
+
- `api_communication_service.py` - API communication with rate limiting
|
|
26
|
+
- `conversation_logger.py` - Conversation persistence (KollaborConversationLogger)
|
|
27
|
+
- `conversation_manager.py` - Conversation state and history
|
|
28
|
+
- `model_router.py` - Model selection and routing
|
|
29
|
+
- `profile_manager.py` - LLM profile management
|
|
30
|
+
- `response_processor.py` - Response processing
|
|
31
|
+
- `response_parser.py` - Response parsing (includes Question Gate detection)
|
|
32
|
+
- `prompt_renderer.py` - Dynamic system prompt rendering
|
|
33
|
+
- `providers/` - Provider implementations (OpenAI, Anthropic, etc.)
|
|
34
|
+
- `oauth/` - OAuth token management
|
|
35
|
+
|
|
36
|
+
### LLM Orchestration (`kollabor/llm/`)
|
|
37
|
+
- `llm_coordinator.py` - Main LLM orchestration (replaces old llm_service.py)
|
|
38
|
+
- `hook_system.py` - LLM-specific hook management
|
|
39
|
+
- `message_handler.py` - Message processing
|
|
40
|
+
- `streaming_handler.py` - Streaming response handling
|
|
41
|
+
- `session_manager.py` - Session lifecycle
|
|
42
|
+
- `status_service.py` - LLM status reporting
|
|
43
|
+
- `permissions/` - Tool permission system
|
|
44
|
+
- `manager.py` - Central permission manager with approval modes
|
|
45
|
+
- `risk_assessor.py` - Risk-based assessment with pattern matching
|
|
46
|
+
- `hook.py` - Event bus integration at SECURITY priority
|
|
47
|
+
- `models.py` - Data structures (ApprovalMode, ToolRiskLevel, PermissionDecision)
|
|
48
|
+
- `config.py` - Configuration defaults
|
|
49
|
+
- `response_handler.py` - User response processing
|
|
50
|
+
|
|
51
|
+
### Terminal UI Package (`kollabor_tui`)
|
|
52
|
+
- `terminal_renderer.py` - Main terminal rendering with status areas
|
|
53
|
+
- `input_handler.py` - Raw mode input handling with key parsing
|
|
54
|
+
- `render_layout.py` - Terminal layout management
|
|
55
|
+
- `visual_effects.py` - Color palettes, visual effects, terminal color detection
|
|
56
|
+
- `status_renderer.py` - Multi-area status display
|
|
57
|
+
- `message_coordinator.py` - **CRITICAL** - Message flow AND render state coordination
|
|
58
|
+
- `message_renderer.py` - Message display rendering
|
|
59
|
+
- `buffer_manager.py` - Terminal buffer management
|
|
60
|
+
- `key_parser.py` - Keyboard input parsing
|
|
61
|
+
- `terminal_state.py` - Terminal state management
|
|
62
|
+
- `thinking_display.py` - Thinking animation display
|
|
63
|
+
- `tool_display.py` - Tool execution display
|
|
64
|
+
- `message_display_service.py` - Response formatting
|
|
65
|
+
- `design_system/` - Theme, colors, box rendering
|
|
66
|
+
- `widgets/` - UI widgets (Checkbox, Dropdown, Slider, TextInput, Label, Progress, SpinBox)
|
|
67
|
+
- `fullscreen/` - Fullscreen modal system
|
|
68
|
+
- `status/` - Status area views
|
|
69
|
+
- `input/` - Input subsystem (modal controller, etc.)
|
|
70
|
+
|
|
71
|
+
### Event System Package (`kollabor_events`)
|
|
72
|
+
- `bus.py` - Central event bus coordinator
|
|
73
|
+
- `registry.py` - Hook registration and lookup
|
|
74
|
+
- `executor.py` - Hook execution with error handling
|
|
75
|
+
- `processor.py` - Sequential event processing
|
|
76
|
+
- `models.py` - Event types, command definitions, hook models
|
|
77
|
+
|
|
78
|
+
### Commands (`kollabor/commands/`)
|
|
79
|
+
- `registry.py` - Command registration and lookup
|
|
80
|
+
- `executor.py` - Command execution
|
|
81
|
+
- `parser.py` - Command parsing
|
|
82
|
+
- `profile_command.py` - Profile management command
|
|
83
|
+
- `mcp_command.py` - MCP server management
|
|
84
|
+
- `ui_commands.py` - UI-related commands
|
|
85
|
+
- `system_commands/` - System command handlers
|
|
86
|
+
|
|
87
|
+
#### CRITICAL: Render State Management Rules
|
|
88
|
+
|
|
89
|
+
**NEVER directly manipulate these `terminal_renderer` properties:**
|
|
90
|
+
- `input_line_written`, `last_line_count`, `_last_render_content`, `writing_messages`
|
|
91
|
+
|
|
92
|
+
**ALWAYS use `MessageDisplayCoordinator` methods:**
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
# Display messages
|
|
96
|
+
renderer.message_coordinator.display_message_sequence([...])
|
|
97
|
+
|
|
98
|
+
# Modal/fullscreen transitions
|
|
99
|
+
renderer.message_coordinator.enter_alternate_buffer() # Before opening modal
|
|
100
|
+
renderer.message_coordinator.exit_alternate_buffer() # After modal closes
|
|
101
|
+
renderer.message_coordinator.exit_alternate_buffer(restore_state=True) # Restore state
|
|
102
|
+
|
|
103
|
+
# Debug queue status
|
|
104
|
+
renderer.message_coordinator.get_queue_status()
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Why:** Direct manipulation causes duplicate input boxes, stale renders, and incorrect clearing. The coordinator uses flag-based coordination - `enter_alternate_buffer()` sets `writing_messages=True` to block the render loop.
|
|
108
|
+
|
|
109
|
+
**Modal exit patterns:**
|
|
110
|
+
```python
|
|
111
|
+
# Standard exit - restores state and renders input
|
|
112
|
+
await self._exit_modal_mode()
|
|
113
|
+
|
|
114
|
+
# Minimal exit - for commands displaying their own content
|
|
115
|
+
await self._exit_modal_mode_minimal()
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Safe direct calls:**
|
|
119
|
+
- `terminal_renderer.clear_active_area()` - uses state correctly
|
|
120
|
+
- `terminal_renderer.invalidate_render_cache()` - just clears cache
|
|
121
|
+
|
|
122
|
+
### Modal/Overlay Pattern for Status Widgets
|
|
123
|
+
|
|
124
|
+
**CRITICAL: Any fullscreen modal MUST use the coordinator pattern.**
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
async def _show_my_modal(self) -> bool:
|
|
128
|
+
self.coordinator.enter_alternate_buffer()
|
|
129
|
+
try:
|
|
130
|
+
sys.stdout.write('\033[?1049h') # Enter alternate buffer
|
|
131
|
+
sys.stdout.write('\033[?25l') # Hide cursor
|
|
132
|
+
sys.stdout.flush()
|
|
133
|
+
# ... render and handle input ...
|
|
134
|
+
finally:
|
|
135
|
+
sys.stdout.write('\033[?25h') # Show cursor
|
|
136
|
+
sys.stdout.write('\033[?1049l') # Exit alternate buffer
|
|
137
|
+
sys.stdout.flush()
|
|
138
|
+
self.coordinator.exit_alternate_buffer(restore_state=True)
|
|
139
|
+
return result
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Why:** `coordinator.enter_alternate_buffer()` pauses the render loop, `exit_alternate_buffer()` resets render state. Without this, artifacts remain after modal closes. The ANSI alternate buffer preserves main screen content.
|
|
143
|
+
|
|
144
|
+
### Config Modal (`/config`)
|
|
145
|
+
|
|
146
|
+
Fullscreen modal for editing all application and plugin settings.
|
|
147
|
+
|
|
148
|
+
**Keyboard shortcuts:**
|
|
149
|
+
- `/` - Activate search filter (filters sections and widgets by label, help text, or config path)
|
|
150
|
+
- `Enter` - Lock filter and navigate filtered results
|
|
151
|
+
- `Esc` - Clear active filter (or close modal if no filter active)
|
|
152
|
+
- `Ctrl+S` - Save config (prompts Local vs Global target)
|
|
153
|
+
- Arrow keys / Tab - Navigate between widgets
|
|
154
|
+
|
|
155
|
+
### STDOUT IS SACRED
|
|
156
|
+
|
|
157
|
+
**CRITICAL: Never use print() or sys.stdout.write() in plugin code.**
|
|
158
|
+
|
|
159
|
+
The terminal UI is a delicate render system. Any rogue stdout writes
|
|
160
|
+
corrupt the display (wrong cursor position, duplicate input boxes,
|
|
161
|
+
garbled status bar). There are exactly TWO legal ways to output:
|
|
162
|
+
|
|
163
|
+
**For messages visible to the user:**
|
|
164
|
+
```python
|
|
165
|
+
renderer.message_coordinator.display_message_sequence([
|
|
166
|
+
("system", "your message", {"display_type": "info"})
|
|
167
|
+
])
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**For hub agent messages:**
|
|
171
|
+
```python
|
|
172
|
+
renderer.message_coordinator.display_message_sequence([
|
|
173
|
+
("agent", content, {"agent_color": color, "tag_char": " > "})
|
|
174
|
+
])
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**For logging (goes to file, not screen):**
|
|
178
|
+
```python
|
|
179
|
+
logger.info("debug info here")
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**NEVER do this in plugins:**
|
|
183
|
+
```python
|
|
184
|
+
print("anything") # ILLEGAL - corrupts UI
|
|
185
|
+
sys.stdout.write("anything") # ILLEGAL - corrupts UI
|
|
186
|
+
sys.stderr.write("debug") # Use logger.debug() instead
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
The only code allowed to call print() is `message_coordinator._output_rendered()`
|
|
190
|
+
which IS the render system's output path. Everything else must route through it.
|
|
191
|
+
|
|
192
|
+
### Hub System (`plugins/hub/`)
|
|
193
|
+
|
|
194
|
+
Peer-to-peer agent mesh with persistent identity.
|
|
195
|
+
|
|
196
|
+
**Core files:**
|
|
197
|
+
- `plugin.py` - Lifecycle, social layer, /hub commands, message display
|
|
198
|
+
- `models.py` - GemDesignation, HubMessage, WorkSlot, designation pool
|
|
199
|
+
- `presence.py` - Heartbeat files, agent discovery, socket liveness checks
|
|
200
|
+
- `coordinator.py` - flock election, work queue, designation assignment
|
|
201
|
+
- `messenger.py` - Unix socket server/client, message delivery
|
|
202
|
+
- `vault.py` - Three-tier persistent memory (stream, working, crystallized)
|
|
203
|
+
- `feed.py` - Dashboard content generator
|
|
204
|
+
- `org_launcher.py` - Launch teams from JSON org charts
|
|
205
|
+
|
|
206
|
+
**Key concepts:**
|
|
207
|
+
- Agents auto-discover via presence files in `~/.kollabor-cli/hub/presence/`
|
|
208
|
+
- First agent becomes coordinator via `flock()` on `hub.lock`
|
|
209
|
+
- Designations are gem-inspired names (lapis, peridot, ruby) with color castes
|
|
210
|
+
- Open channel: all agents see all messages (like Slack)
|
|
211
|
+
- Vaults persist across sessions at `~/.kollabor-cli/hub/vaults/<designation>/`
|
|
212
|
+
- `--agent` flag sets both agent bundle AND hub designation (phase 2+)
|
|
213
|
+
- Status widget: `◈ designation* +peers` on status bar row 3
|
|
214
|
+
|
|
215
|
+
**Message types for hub display:**
|
|
216
|
+
```python
|
|
217
|
+
# Direct message (bright, > tag)
|
|
218
|
+
display_message_sequence([("agent", content, {"agent_color": (r,g,b)})])
|
|
219
|
+
|
|
220
|
+
# Observed message (dim, ~ tag)
|
|
221
|
+
display_message_sequence([("agent", content, {
|
|
222
|
+
"agent_color": (r,g,b), "tag_char": " ~ ", "observing": True
|
|
223
|
+
})])
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**AltView fullscreen views (use AltView stack, NOT LiveModal):**
|
|
227
|
+
- `/hub feed` - Live dashboard (plugins/altview/hub_feed_altview.py)
|
|
228
|
+
- `/hub console` - Sidebar + feed panel (plugins/altview/hub_console_altview.py)
|
|
229
|
+
- `/terminal view` - Tmux session viewer (plugins/terminal_altview.py)
|
|
230
|
+
|
|
231
|
+
### Plugin Architecture
|
|
232
|
+
- Plugin discovery from `plugins/` directory
|
|
233
|
+
- Dynamic instantiation with dependency injection
|
|
234
|
+
- Hook registration for event interception
|
|
235
|
+
- Configuration merging from plugin configs
|
|
236
|
+
|
|
237
|
+
### UI Design System (`kollabor_tui.design_system`)
|
|
238
|
+
|
|
239
|
+
**CRITICAL: Always use existing UI components. Never invent new patterns.**
|
|
240
|
+
|
|
241
|
+
**Core Imports:**
|
|
242
|
+
```python
|
|
243
|
+
from kollabor_tui.design_system import T, S, C, Box, TagBox, solid, solid_fg, gradient
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Theme Access (`T()`):**
|
|
247
|
+
- `T().primary`, `T().dark`, `T().text`, `T().text_dim`
|
|
248
|
+
- `T().success`, `T().error`, `T().warning`
|
|
249
|
+
|
|
250
|
+
**Style Constants (`S`):**
|
|
251
|
+
- `S.BOLD`, `S.RESET_BOLD`, `S.DIM`, `S.RESET_DIM`, `S.UNDERLINE`, `S.RESET_UNDERLINE`
|
|
252
|
+
|
|
253
|
+
**Box Rendering (solid block style):**
|
|
254
|
+
```python
|
|
255
|
+
solid_fg("▄" * width, T().dark[0]) # Top edge
|
|
256
|
+
solid(f" {text:<{w}}", T().dark[0], T().text, w) # Content
|
|
257
|
+
solid_fg("▀" * width, T().dark[0]) # Bottom edge
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**TagBox (tag + content pattern):**
|
|
261
|
+
```python
|
|
262
|
+
TagBox.render(
|
|
263
|
+
lines=["content"],
|
|
264
|
+
tag_bg=T().primary[0], tag_fg=T().text_dark, tag_width=3,
|
|
265
|
+
content_colors=T().dark[0], content_fg=T().text,
|
|
266
|
+
content_width=width - 7,
|
|
267
|
+
tag_chars=[" > "],
|
|
268
|
+
)
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
**Widgets (`kollabor_tui.widgets`):**
|
|
272
|
+
`CheckboxWidget`, `DropdownWidget`, `SliderWidget`, `TextInputWidget`, `LabelWidget`, `ProgressWidget`, `SpinBoxWidget`
|
|
273
|
+
|
|
274
|
+
**DO NOT:**
|
|
275
|
+
- Create box-drawing with characters (use solid block style instead)
|
|
276
|
+
- Hardcode colors (use `T()`)
|
|
277
|
+
- Access `terminal_state.width` directly (use `get_size()`)
|
|
278
|
+
- Invent new widget styles
|
|
279
|
+
|
|
280
|
+
### Universal Terminal State Management
|
|
281
|
+
|
|
282
|
+
**CRITICAL: All code must access terminal dimensions through the global state.**
|
|
283
|
+
|
|
284
|
+
```python
|
|
285
|
+
from kollabor_tui.terminal_state import get_terminal_size, get_terminal_width, get_terminal_height
|
|
286
|
+
|
|
287
|
+
width, height = get_terminal_size()
|
|
288
|
+
width = get_terminal_width()
|
|
289
|
+
height = get_terminal_height()
|
|
290
|
+
|
|
291
|
+
# Direct instance
|
|
292
|
+
from kollabor_tui.terminal_state import get_global_terminal_state
|
|
293
|
+
ts = get_global_terminal_state()
|
|
294
|
+
width, height = ts.get_size()
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**WRONG:**
|
|
298
|
+
```python
|
|
299
|
+
import shutil
|
|
300
|
+
size = shutil.get_terminal_size() # NO!
|
|
301
|
+
import os
|
|
302
|
+
size = os.get_terminal_size() # NO!
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**For Plugins:**
|
|
306
|
+
```python
|
|
307
|
+
async def render_frame(self, delta_time: float) -> bool:
|
|
308
|
+
width, height = self.renderer.get_terminal_size()
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## Development Commands
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
# Installation
|
|
315
|
+
pip install -e . # Development mode
|
|
316
|
+
pip install -e ".[dev]" # With dev dependencies
|
|
317
|
+
pip install kollab # From PyPI
|
|
318
|
+
|
|
319
|
+
# Running
|
|
320
|
+
kollab # Installed command
|
|
321
|
+
python main.py # Development mode
|
|
322
|
+
echo "query" | kollab -p # Pipe mode
|
|
323
|
+
kollab "query" --timeout 5min # With timeout
|
|
324
|
+
|
|
325
|
+
# Testing
|
|
326
|
+
tests/tmux/lib/test_runner.sh tests/tmux/specs/mcp_memory_usage.json # JSON test
|
|
327
|
+
tests/tmux/run_all_tests.sh # All tmux tests
|
|
328
|
+
python tests/run_tests.py # Unit tests
|
|
329
|
+
python -m unittest tests.test_llm_plugin # Specific test
|
|
330
|
+
|
|
331
|
+
# Code quality
|
|
332
|
+
python -m black kollabor/ plugins/ tests/ main.py # Format (88 chars)
|
|
333
|
+
python -m ruff check kollabor/ packages/ plugins/ # Lint (120 chars)
|
|
334
|
+
python -m mypy kollabor/ plugins/ # Type check
|
|
335
|
+
python scripts/clean.py # Clean cache
|
|
336
|
+
|
|
337
|
+
# Building
|
|
338
|
+
python scripts/clean.py
|
|
339
|
+
python -m build
|
|
340
|
+
python -m twine upload --repository testpypi dist/*
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
**Log locations:**
|
|
344
|
+
- `~/.kollabor-cli/projects/<encoded-path>/logs/kollabor.log` (daily rotation)
|
|
345
|
+
- `~/.kollabor-cli/config.json` (global config)
|
|
346
|
+
- `~/.kollabor-cli/projects/<encoded-path>/conversations/` (JSONL)
|
|
347
|
+
|
|
348
|
+
## Agent Verification Requirements (MANDATORY)
|
|
349
|
+
|
|
350
|
+
**All agents implementing features MUST create JSON-based tmux verification tests.**
|
|
351
|
+
|
|
352
|
+
1. **Create JSON test spec** in `tests/tmux/specs/`:
|
|
353
|
+
```json
|
|
354
|
+
{
|
|
355
|
+
"name": "feature-name",
|
|
356
|
+
"description": "What this test verifies",
|
|
357
|
+
"config": {
|
|
358
|
+
"command": "python main.py",
|
|
359
|
+
"app_init_sleep": 3,
|
|
360
|
+
"show_captures": false
|
|
361
|
+
},
|
|
362
|
+
"steps": [
|
|
363
|
+
{ "action": "start_app" },
|
|
364
|
+
{ "action": "slash_command", "command": "mcp", "subcommand": "show" },
|
|
365
|
+
{ "action": "sleep", "seconds": 1 },
|
|
366
|
+
{ "action": "capture" },
|
|
367
|
+
{ "action": "assert_contains", "pattern": "MCP|Status" }
|
|
368
|
+
]
|
|
369
|
+
}
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
2. **Available actions:** `start_app`, `slash_command`, `type`, `send_keys`, `capture`, `assert_contains`, `assert_not_contains`, `sleep`, `section`
|
|
373
|
+
|
|
374
|
+
3. **Run:** `tests/tmux/lib/test_runner.sh tests/tmux/specs/your-test.json`
|
|
375
|
+
|
|
376
|
+
4. **Report:**
|
|
377
|
+
```
|
|
378
|
+
implementation complete:
|
|
379
|
+
feature: [name]
|
|
380
|
+
test: tests/tmux/specs/feature-name.json
|
|
381
|
+
result: PASS (X/Y assertions verified)
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
**DO NOT report implementation as complete without a passing test.**
|
|
385
|
+
|
|
386
|
+
See `tests/tmux/README.md` for complete documentation.
|
|
387
|
+
|
|
388
|
+
## Entry Points
|
|
389
|
+
|
|
390
|
+
1. **`kollab` command** (after `pip install`): Entry point `kollab = "kollabor_cli_main:cli_main"` in `pyproject.toml`
|
|
391
|
+
2. **`python main.py`** (development): Direct execution from local `kollabor/`
|
|
392
|
+
|
|
393
|
+
Both initialize `TerminalLLMChat` in `kollabor/application.py`.
|
|
394
|
+
|
|
395
|
+
## Configuration System
|
|
396
|
+
|
|
397
|
+
**Dot notation:** `config.get("kollabor.llm.max_history", 90)`
|
|
398
|
+
|
|
399
|
+
**Global directory (`~/.kollabor-cli/`):**
|
|
400
|
+
- `config.json` - User configuration
|
|
401
|
+
- `agents/` - Global agent definitions
|
|
402
|
+
- `projects/` - Project-specific data
|
|
403
|
+
|
|
404
|
+
**Project data (`~/.kollabor-cli/projects/<encoded-path>/`):**
|
|
405
|
+
- `conversations/` - JSONL logs
|
|
406
|
+
- `conversations/raw/` - Raw API logs
|
|
407
|
+
- `conversations/memory/` - Intelligence cache
|
|
408
|
+
- `conversations/snapshots/` - Snapshots
|
|
409
|
+
- `logs/` - Application logs
|
|
410
|
+
|
|
411
|
+
**Path encoding:** `/home/user/myproject` -> `home_user_myproject`
|
|
412
|
+
|
|
413
|
+
**Local directory (`.kollabor-cli/` - OPTIONAL):**
|
|
414
|
+
- `agents/` - Project-specific agents (override global)
|
|
415
|
+
|
|
416
|
+
**Agent resolution:** Local -> Global
|
|
417
|
+
|
|
418
|
+
**Config save targets (`/config` modal, `Ctrl+S`):**
|
|
419
|
+
- Local (`L`): Saves to `.kollabor-cli/config.json` in cwd (project-specific overrides)
|
|
420
|
+
- Global (`G`): Saves to `~/.kollabor-cli/config.json` (user-wide settings)
|
|
421
|
+
- Only overrides (diff from defaults) are persisted, not the full config tree
|
|
422
|
+
|
|
423
|
+
### Dynamic System Prompts with `<trender>` Tags
|
|
424
|
+
|
|
425
|
+
System prompts support dynamic content rendering at runtime (`kollabor_ai.prompt_renderer`):
|
|
426
|
+
|
|
427
|
+
```markdown
|
|
428
|
+
<!-- Project structure -->
|
|
429
|
+
<trender type="project_tree" max_depth="3" />
|
|
430
|
+
|
|
431
|
+
<!-- File listings -->
|
|
432
|
+
<trender type="file_list" pattern="**/*.py" exclude="__pycache__" />
|
|
433
|
+
|
|
434
|
+
<!-- File contents -->
|
|
435
|
+
<trender type="file_content" path="README.md" />
|
|
436
|
+
|
|
437
|
+
<!-- Metadata -->
|
|
438
|
+
<trender type="timestamp" format="%Y-%m-%d %H:%M:%S" />
|
|
439
|
+
|
|
440
|
+
<!-- Hub tags (require event_bus with hub_plugin service) -->
|
|
441
|
+
<trender type="hub_identity" />
|
|
442
|
+
<trender type="hub_roster" />
|
|
443
|
+
<trender type="hub_vault" />
|
|
444
|
+
<trender type="hub_work_queue" />
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
**Priority order:** `KOLLABOR_SYSTEM_PROMPT` env var -> `KOLLABOR_SYSTEM_PROMPT_FILE` env var -> Local `.kollabor-cli/system_prompt/default.md` -> Global `~/.kollabor-cli/system_prompt/default.md` -> Built-in fallback
|
|
448
|
+
|
|
449
|
+
## Core Architecture Patterns
|
|
450
|
+
|
|
451
|
+
### Event-Driven Design
|
|
452
|
+
Event bus (`kollabor_events.bus`) coordinates:
|
|
453
|
+
- **HookRegistry** (`kollabor_events.registry`) - Hook registration and lookup
|
|
454
|
+
- **HookExecutor** (`kollabor_events.executor`) - Hook execution with error handling
|
|
455
|
+
- **EventProcessor** (`kollabor_events.processor`) - Sequential event processing
|
|
456
|
+
- **EventBus** (`kollabor_events.bus`) - Central coordinator
|
|
457
|
+
|
|
458
|
+
### Plugin Lifecycle
|
|
459
|
+
1. **Discovery** - `PluginDiscovery` scans `plugins/`
|
|
460
|
+
2. **Registry** - `PluginRegistry` maintains metadata
|
|
461
|
+
3. **Factory** - `PluginFactory` instantiates with dependency injection
|
|
462
|
+
4. **Initialization** - Plugins call `initialize()` and `register_hooks()`
|
|
463
|
+
5. **Execution** - Events trigger registered hooks with priority ordering
|
|
464
|
+
6. **Cleanup** - Plugins call `shutdown()`
|
|
465
|
+
|
|
466
|
+
### LLM Coordinator Architecture
|
|
467
|
+
`LLMCoordinator` (`kollabor/llm/llm_coordinator.py`) orchestrates:
|
|
468
|
+
- **APICommunicationService** (`kollabor_ai`) - HTTP client with rate limiting
|
|
469
|
+
- **KollaborConversationLogger** (`kollabor_ai`) - Persistent conversation history
|
|
470
|
+
- **MessageDisplayService** (`kollabor_tui`) - Response formatting and streaming
|
|
471
|
+
- **StreamingHandler** (`kollabor/llm/`) - Stream processing
|
|
472
|
+
- **MessageHandler** (`kollabor/llm/`) - Message flow
|
|
473
|
+
- **LLMHookSystem** (`kollabor/llm/`) - Request/response interception
|
|
474
|
+
|
|
475
|
+
### Question Gate Protocol
|
|
476
|
+
|
|
477
|
+
Suspends tool execution when agent asks clarifying questions using `<question>` tags (prevents runaway loops):
|
|
478
|
+
|
|
479
|
+
1. Agent includes `<question>...</question>` tag
|
|
480
|
+
2. System detects tag, suspends pending tools (stored in `pending_tools`)
|
|
481
|
+
3. User responds
|
|
482
|
+
4. Suspended tools execute, results injected
|
|
483
|
+
5. Agent continues
|
|
484
|
+
|
|
485
|
+
**Configuration:** `kollabor.llm.question_gate_enabled` (default: `true`)
|
|
486
|
+
|
|
487
|
+
**Key files:** `kollabor_ai.response_parser` (detection), `kollabor/llm/llm_coordinator.py` (queue management)
|
|
488
|
+
|
|
489
|
+
See `docs/features/question-gate-protocol.md`.
|
|
490
|
+
|
|
491
|
+
### Plugin System Details
|
|
492
|
+
**Discovery locations (in order):**
|
|
493
|
+
1. `<package_root>/plugins/` (pip install)
|
|
494
|
+
2. `./plugins/` (development mode)
|
|
495
|
+
|
|
496
|
+
**Each plugin can:**
|
|
497
|
+
- Register hooks at any priority (CRITICAL, HIGH, NORMAL, LOW)
|
|
498
|
+
- Access shared services via dependency injection
|
|
499
|
+
- Contribute status line items to areas A, B, or C
|
|
500
|
+
- Merge custom configuration into global config
|
|
501
|
+
- Register slash commands via CommandRegistry
|
|
502
|
+
|
|
503
|
+
## Hook System
|
|
504
|
+
|
|
505
|
+
Plugins can:
|
|
506
|
+
- Intercept user input (`pre_user_input`)
|
|
507
|
+
- Transform LLM requests (`pre_api_request`)
|
|
508
|
+
- Process responses (`post_api_response`)
|
|
509
|
+
- Add custom status indicators (`get_status_line()`)
|
|
510
|
+
- Create new terminal UI elements
|
|
511
|
+
|
|
512
|
+
### Config Hooks (JSON, no Python needed)
|
|
513
|
+
|
|
514
|
+
Claude Code-compatible JSON hooks. Create `.kollabor-cli/hooks.json`:
|
|
515
|
+
|
|
516
|
+
```json
|
|
517
|
+
{
|
|
518
|
+
"hooks": {
|
|
519
|
+
"PreToolUse": [
|
|
520
|
+
{
|
|
521
|
+
"matcher": "file_create|file_edit",
|
|
522
|
+
"hooks": [{ "type": "command", "command": "python guard.py" }]
|
|
523
|
+
}
|
|
524
|
+
]
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
Commands receive event data on stdin (JSON), respond via exit code + stdout JSON.
|
|
530
|
+
Exit 0 = proceed, exit 2 = block. Supports Claude Code event names (`PreToolUse`,
|
|
531
|
+
`UserPromptSubmit`, etc.) plus Kollabor-native names (`LlmRequestPre`, `McpToolCallPre`, etc.).
|
|
532
|
+
|
|
533
|
+
**Key file:** `kollabor/config_hooks.py` (ConfigHookLoader)
|
|
534
|
+
|
|
535
|
+
See `docs/features/config-hooks.md` for full reference.
|
|
536
|
+
|
|
537
|
+
## Plugin Development
|
|
538
|
+
|
|
539
|
+
Plugins should:
|
|
540
|
+
1. Inherit from base classes in `kollabor_plugins`
|
|
541
|
+
2. Register hooks in `register_hooks()` using `EventType` enum
|
|
542
|
+
3. Provide status info via `get_status_line()`
|
|
543
|
+
4. Implement `initialize()` and `shutdown()`
|
|
544
|
+
5. Use `async def` for all hook handlers
|
|
545
|
+
6. Optionally implement `get_config_widgets()` to expose settings in the `/config` modal
|
|
546
|
+
|
|
547
|
+
### Plugin Config Widgets
|
|
548
|
+
|
|
549
|
+
Plugins can expose configurable settings in the `/config` modal by implementing a static `get_config_widgets()` method. Widgets are auto-discovered from the `plugins/` directory (no manual registration needed).
|
|
550
|
+
|
|
551
|
+
```python
|
|
552
|
+
@staticmethod
|
|
553
|
+
def get_config_widgets() -> Dict[str, Any]:
|
|
554
|
+
return {
|
|
555
|
+
"title": "My Plugin",
|
|
556
|
+
"widgets": [
|
|
557
|
+
{"type": "checkbox", "label": "Enabled", "config_path": "plugins.my_plugin.enabled", "help": "Enable plugin"},
|
|
558
|
+
{"type": "slider", "label": "Timeout", "config_path": "plugins.my_plugin.timeout", "min_value": 1, "max_value": 60, "step": 1, "help": "Timeout in seconds"},
|
|
559
|
+
],
|
|
560
|
+
}
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
Supported widget types: `checkbox`, `slider`, `dropdown`, `text_input`, `spinbox`. Each widget requires `type`, `label`, `config_path`, and `help`. Additional keys depend on the widget type (e.g., `min_value`/`max_value`/`step` for slider, `options` for dropdown).
|
|
564
|
+
|
|
565
|
+
## Project Structure
|
|
566
|
+
|
|
567
|
+
```
|
|
568
|
+
.
|
|
569
|
+
├── kollabor/ # Core orchestration
|
|
570
|
+
│ ├── application.py # Main TerminalLLMChat class
|
|
571
|
+
│ ├── cli.py # CLI entry point
|
|
572
|
+
│ ├── commands/ # Slash command system
|
|
573
|
+
│ │ ├── registry.py # Command registration
|
|
574
|
+
│ │ ├── executor.py # Command execution
|
|
575
|
+
│ │ ├── profile_command.py # Profile management
|
|
576
|
+
│ │ ├── mcp_command.py # MCP server management
|
|
577
|
+
│ │ └── system_commands/ # System command handlers
|
|
578
|
+
│ ├── llm/ # LLM orchestration layer
|
|
579
|
+
│ │ ├── llm_coordinator.py # Main coordinator
|
|
580
|
+
│ │ ├── hook_system.py # LLM hooks
|
|
581
|
+
│ │ ├── streaming_handler.py # Stream processing
|
|
582
|
+
│ │ ├── message_handler.py # Message flow
|
|
583
|
+
│ │ ├── session_manager.py # Session lifecycle
|
|
584
|
+
│ │ └── permissions/ # Tool permission system
|
|
585
|
+
│ ├── config_hooks.py # JSON hook loading
|
|
586
|
+
│ ├── fullscreen/ # Fullscreen command integration
|
|
587
|
+
│ └── logging/ # Logging configuration
|
|
588
|
+
├── packages/ # Extracted packages
|
|
589
|
+
│ ├── kollabor-ai/ # LLM services (kollabor_ai)
|
|
590
|
+
│ ├── kollabor-tui/ # Terminal UI (kollabor_tui)
|
|
591
|
+
│ ├── kollabor-events/ # Event system (kollabor_events)
|
|
592
|
+
│ ├── kollabor-config/ # Configuration (kollabor_config)
|
|
593
|
+
│ ├── kollabor-agent/ # Agent runtime (kollabor_agent)
|
|
594
|
+
│ ├── kollabor-plugins/ # Plugin framework (kollabor_plugins)
|
|
595
|
+
│ ├── kollabor-engine/ # Engine server (kollabor_engine)
|
|
596
|
+
│ └── kollabor-webui/ # Web UI (kollabor_webui)
|
|
597
|
+
├── plugins/ # Plugin implementations
|
|
598
|
+
│ ├── enhanced_input_plugin.py
|
|
599
|
+
│ ├── hook_monitoring_plugin.py
|
|
600
|
+
│ └── [other plugins]
|
|
601
|
+
├── bundles/ # Agent bundles
|
|
602
|
+
│ └── agents/ # Agent definitions
|
|
603
|
+
├── tests/ # Test suite
|
|
604
|
+
│ ├── tmux/ # JSON-based UI tests
|
|
605
|
+
│ │ ├── specs/ # Test specifications
|
|
606
|
+
│ │ ├── lib/ # Test framework
|
|
607
|
+
│ │ └── README.md
|
|
608
|
+
│ ├── unit/, integration/, visual/
|
|
609
|
+
│ └── test_*.py
|
|
610
|
+
├── docs/ # Documentation
|
|
611
|
+
│ ├── features/ # Feature specifications
|
|
612
|
+
│ ├── guides/ # Developer guides
|
|
613
|
+
│ ├── reference/ # API and architecture reference
|
|
614
|
+
│ ├── providers/ # Provider setup guides
|
|
615
|
+
│ ├── mcp/ # MCP documentation
|
|
616
|
+
│ └── plugins/ # Plugin specifications
|
|
617
|
+
├── main.py # Entry point
|
|
618
|
+
└── .github/scripts/ # Repository automation
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
**Runtime data (`~/.kollabor-cli/`):**
|
|
622
|
+
```
|
|
623
|
+
~/.kollabor-cli/
|
|
624
|
+
├── config.json # User configuration
|
|
625
|
+
├── agents/ # Global agent definitions
|
|
626
|
+
└── projects/ # Project-specific data
|
|
627
|
+
└── <encoded-path>/
|
|
628
|
+
├── conversations/ # Conversation history (JSONL)
|
|
629
|
+
└── logs/ # Application logs
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
## Development Guidelines
|
|
633
|
+
|
|
634
|
+
### Git Workflow
|
|
635
|
+
**Pre-commit:** Commits to `kollabor/`, `plugins/`, `tests/` MUST reference GitHub issue
|
|
636
|
+
- Branch: `issue-123-description` or `feature/issue-123-description`
|
|
637
|
+
- Commit: `fixes #123`, `closes #123`, `resolves #123`, or `#123`
|
|
638
|
+
- Main branch protected - no direct pushes
|
|
639
|
+
|
|
640
|
+
```bash
|
|
641
|
+
gh issue create --title "Fix version display"
|
|
642
|
+
git switch -c issue-8-version-display-fix
|
|
643
|
+
git commit -m "Fix version display fixes #8"
|
|
644
|
+
git push -u kollaborai issue-8-version-display-fix
|
|
645
|
+
gh pr create --title "Fix version display" --body "Fixes #8"
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
### Version Management
|
|
649
|
+
Version managed centrally in `pyproject.toml`:
|
|
650
|
+
- **Development mode** (`python main.py`): Reads from `pyproject.toml` at runtime
|
|
651
|
+
- **Production mode** (pip install): Uses `importlib.metadata.version("kollab")`
|
|
652
|
+
|
|
653
|
+
Files reading version: `kollabor/application.py`, `kollabor/cli.py`, `kollabor_config.loader`
|
|
654
|
+
|
|
655
|
+
To update: Only modify `pyproject.toml`.
|
|
656
|
+
|
|
657
|
+
### Code Standards
|
|
658
|
+
- PEP 8 with Black formatting (88-char) and ruff linting (120-char)
|
|
659
|
+
- Lint: `ruff check` must pass with 0 violations before commit
|
|
660
|
+
- Double quotes for strings, single for chars
|
|
661
|
+
- Type hints on public functions
|
|
662
|
+
- `async def` for all hooks (even if no await)
|
|
663
|
+
- `logging.getLogger(__name__)` for logging
|
|
664
|
+
|
|
665
|
+
### Async/Await Patterns
|
|
666
|
+
- Main event loop: `asyncio.run()` in `cli_main()`
|
|
667
|
+
- Concurrent tasks: `asyncio.gather()` for render loop + input handler
|
|
668
|
+
- Background tasks: Use `app.create_background_task()` for tracking
|
|
669
|
+
- Cleanup: All tasks cancelled in `app.cleanup()` via `finally`
|
|
670
|
+
- Plugin hooks: Must be async
|
|
671
|
+
|
|
672
|
+
### Testing Strategy
|
|
673
|
+
- **JSON tmux tests** (`tests/tmux/specs/`) - PRIMARY approach for UI/features
|
|
674
|
+
- Unit tests in `tests/unit/`
|
|
675
|
+
- Integration tests in `tests/integration/`
|
|
676
|
+
- Visual tests in `tests/visual/`
|
|
677
|
+
- Component tests (`test_*.py`)
|
|
678
|
+
|
|
679
|
+
### Hook Development
|
|
680
|
+
Consider:
|
|
681
|
+
- Hook priority (`HookPriority` enum: CRITICAL, HIGH, NORMAL, LOW)
|
|
682
|
+
- Error handling - hooks shouldn't crash (caught by HookExecutor)
|
|
683
|
+
- Performance - hooks are in hot path
|
|
684
|
+
- State management - avoid shared mutable state
|
|
685
|
+
- Return modified context from hooks
|
|
686
|
+
- All handlers must be async
|
|
687
|
+
|
|
688
|
+
## Key Features
|
|
689
|
+
|
|
690
|
+
### Interactive Mode
|
|
691
|
+
- Real-time status updates across three areas (A, B, C)
|
|
692
|
+
- Thinking animations during LLM processing
|
|
693
|
+
- Multi-line input with visual input box
|
|
694
|
+
- Conversation history with scrollback
|
|
695
|
+
- Plugin-driven extensibility
|
|
696
|
+
|
|
697
|
+
### Pipe Mode
|
|
698
|
+
- `kollab "query"` - Single query and exit
|
|
699
|
+
- `echo "query" | kollab -p` - Read from stdin
|
|
700
|
+
- `kollab --timeout 5min "task"` - Configurable timeout
|
|
701
|
+
- Suppresses interactive UI elements
|
|
702
|
+
- Full plugin support (`app.pipe_mode` flag)
|
|
703
|
+
|
|
704
|
+
### Tool Permission System
|
|
705
|
+
- 4 approval modes: CONFIRM_ALL (default), DEFAULT, AUTO_APPROVE_EDITS, TRUST_ALL
|
|
706
|
+
- Risk-based assessment with pattern matching
|
|
707
|
+
- Inline permission prompts (no modal interruption)
|
|
708
|
+
- Session-scoped approvals
|
|
709
|
+
- `/permissions` command for runtime management
|
|
710
|
+
- Event bus integration at SECURITY priority (900)
|
|
711
|
+
|
|
712
|
+
**Permission keys:** `a` approve once, `s` session, `p` project, `d` deny, `ESC` cancel
|
|
713
|
+
**Context-specific:** `A` always edits, `t` trust tool, `c` cancel
|
|
714
|
+
|
|
715
|
+
See `kollabor/llm/permissions/README.md`.
|
|
716
|
+
|
|
717
|
+
### Terminal Color Support
|
|
718
|
+
|
|
719
|
+
**Auto-detected modes:** TRUE_COLOR (24-bit), EXTENDED (256-color), BASIC (16-color), NONE
|
|
720
|
+
|
|
721
|
+
**Detection order:** `COLORTERM` env var -> `TERM_PROGRAM` -> `TERM` variable -> Apple Terminal (256-color)
|
|
722
|
+
|
|
723
|
+
**Manual override:**
|
|
724
|
+
```bash
|
|
725
|
+
KOLLABOR_COLOR_MODE=256 kollab # 256-color
|
|
726
|
+
KOLLABOR_COLOR_MODE=truecolor kollab # True color
|
|
727
|
+
KOLLABOR_COLOR_MODE=none kollab # No colors
|
|
728
|
+
export KOLLABOR_COLOR_MODE=256 # Persist
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
**Programmatic:**
|
|
732
|
+
```python
|
|
733
|
+
from kollabor_tui.visual_effects import set_color_support, ColorSupport
|
|
734
|
+
set_color_support(ColorSupport.EXTENDED)
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
## Slash Commands
|
|
738
|
+
|
|
739
|
+
**Built-in:**
|
|
740
|
+
- `/help` - Show available commands
|
|
741
|
+
- `/save` - Save conversation (transcript|markdown|jsonl|clipboard|both|local)
|
|
742
|
+
- `/profile` (aliases: `/prof`, `/llm`) - Manage LLM profiles (list|set|create)
|
|
743
|
+
- `/permissions` (aliases: `/perms`, `/security`) - Manage permissions (show|default|strict|trust|stats|clear)
|
|
744
|
+
- `/terminal` (aliases: `/tmux`, `/term`, `/t`) - Manage tmux sessions (new|view|list|kill)
|
|
745
|
+
- `/hub` (aliases: `/mesh`) - Agent hub (status|msg|broadcast|feed|console|org|vault|whoami)
|
|
746
|
+
- `/login` - OAuth login for providers (currently OpenAI)
|
|
747
|
+
- `/mcp` - Manage MCP servers (show|add|remove)
|
|
748
|
+
- `/resume` - Resume a previous conversation
|
|
749
|
+
- `/config` - Fullscreen config editor modal. Press `/` to search/filter settings by label, help text, or config path. `Ctrl+S` prompts for Local (L) or Global (G) save target.
|
|
750
|
+
- `/matrix` - Matrix rain effect
|
|
751
|
+
- `/version` - Show version
|
|
752
|
+
|
|
753
|
+
**Command menu:** Triggered by `/`, filters with prefix matching, arrow keys navigate, Enter executes. Prioritizes name matches over aliases. When filtered to single command, subcommands appear and are selectable.
|
|
754
|
+
|
|
755
|
+
**Adding custom commands with subcommands:**
|
|
756
|
+
```python
|
|
757
|
+
from kollabor_events.models import CommandDefinition, CommandCategory, SubcommandInfo
|
|
758
|
+
|
|
759
|
+
command_def = CommandDefinition(
|
|
760
|
+
name="mycommand",
|
|
761
|
+
description="My custom command",
|
|
762
|
+
category=CommandCategory.CUSTOM,
|
|
763
|
+
aliases=["mc", "mycmd"],
|
|
764
|
+
handler=my_handler_function,
|
|
765
|
+
subcommands=[
|
|
766
|
+
SubcommandInfo("action1", "", "Execute action 1"),
|
|
767
|
+
SubcommandInfo("action2", "<arg>", "Execute action 2 with argument"),
|
|
768
|
+
]
|
|
769
|
+
)
|
|
770
|
+
command_registry.register_command(command_def)
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
## Current State
|
|
774
|
+
|
|
775
|
+
Monorepo with 8 extracted packages. Recent development:
|
|
776
|
+
- Monorepo restructure (kollabor-ai, kollabor-tui, kollabor-events, kollabor-config, kollabor-agent, kollabor-plugins, kollabor-engine, kollabor-webui)
|
|
777
|
+
- LLM service refactored into llm_coordinator.py + extracted modules
|
|
778
|
+
- Subcommand system with smart execution
|
|
779
|
+
- Dynamic system prompt rendering with `<trender>` tags
|
|
780
|
+
- Environment variable configuration for LLM profiles
|
|
781
|
+
- OAuth login (OpenAI)
|
|
782
|
+
- MCP integration
|
|
783
|
+
- Tool permission system with risk assessment
|
|
784
|
+
- Tmux plugin with live modal viewing
|
|
785
|
+
|
|
786
|
+
**The codebase uses Python 3.12+ with async/await throughout.**
|