Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
9308558
feat: Implement the initial baseline and client for Titan Slack plugin
finxo Jun 10, 2026
0783754
feat: Implement personal user token authentication and configuration …
finxo Jun 10, 2026
a14f77c
feat: Implement auth_test method in SlackClient for token validation
finxo Jun 10, 2026
732d662
feat: Implement client methods to list users, public channels, and re…
finxo Jun 10, 2026
6ec5b0e
feat: Add Slack integration plugin to the CLI
finxo Jun 10, 2026
93c1779
feat: Add support for custom plugin configuration screens
finxo Jun 10, 2026
0bc0990
feat: Add custom configuration screen for Slack plugin
finxo Jun 10, 2026
3032c81
feat: Implement Slack OAuth authentication flow and configuration scr…
finxo Jun 10, 2026
34fa253
feat: Implement PKCE-based OAuth flow for Slack integration and remov…
finxo Jun 10, 2026
6434abd
feat: Implement Slack plugin with workspace discovery workflow and di…
finxo Jun 10, 2026
4287c1d
feat: Enable Slack plugin and update integration documentation
finxo Jun 10, 2026
3e6e890
feat: Add Slack target selection steps for users and channels
finxo Jun 10, 2026
4568763
feat: Implement Slack messaging service, steps, and direct message wo…
finxo Jun 10, 2026
51ddfbf
feat: Implement AI-powered Slack conversation summarization workflow …
finxo Jun 15, 2026
8cad721
feat: Add send-slack-channel-message workflow with unified prepare_me…
finxo Jun 16, 2026
b7d3323
feat: Add project-scoped Slack workspace configuration and update plu…
finxo Jun 16, 2026
f3eb939
feat: Add Slack plugin configuration and OAuth flow support
finxo Jun 16, 2026
d076b6d
feat: Add Slack identity resolver with caching and update plugin conf…
finxo Jun 16, 2026
23901b6
feat: Add select_default_or_search_channel_target step for Slack summ…
finxo Jun 16, 2026
1800654
docs: Update Slack plugin docs and enable Slack config in project
finxo Jun 17, 2026
7d6f56a
docs: Add Slack plugin documentation and update step inventory with n…
finxo Jun 17, 2026
a6acf6c
refactor: Remove keyring fallback and enforce authed_user token extra…
finxo Jun 22, 2026
b5ce582
feat: Add PKCE token refresh support and update Slack OAuth flow to h…
finxo Jun 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ venv.bak/
.idea/
.vscode/
.codex
.harness
harness/
.titan/worktrees/
*.swp
*.swo
Expand Down
5 changes: 5 additions & 0 deletions .titan/operations/plugin_docs_operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,17 @@
"package_dir": "plugins/titan-plugin-jira",
"plugin_ref": "titan_plugin_jira.plugin:JiraPlugin",
},
"slack": {
"package_dir": "plugins/titan-plugin-slack",
"plugin_ref": "titan_plugin_slack.plugin:SlackPlugin",
},
}

WORKFLOW_STEPS_PAGE_PATHS = {
"git": "docs/plugins/git/workflow-steps.md",
"github": "docs/plugins/github/workflow-steps.md",
"jira": "docs/plugins/jira/workflow-steps.md",
"slack": "docs/plugins/slack/workflow-steps.md",
}

SECTION_HEADERS = [
Expand Down
470 changes: 470 additions & 0 deletions docs/plugins/_generated/slack-step-inventory.json

Large diffs are not rendered by default.

39 changes: 39 additions & 0 deletions docs/plugins/_meta/slack-step-groups.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"plugin": "slack",
"groups": [
{
"name": "Validation and Discovery",
"steps": [
{"name": "validate_connection", "summary": "Validate the configured Slack token and expose identity metadata."},
{"name": "list_public_channels", "summary": "List public channels visible to the current Slack token."},
{"name": "list_users", "summary": "List users visible to the current Slack token."}
]
},
{
"name": "Selection and Target Resolution",
"steps": [
{"name": "select_user_target", "summary": "Filter visible Slack users by query and select one canonical user target."},
{"name": "select_channel_target", "summary": "Filter visible Slack channels by query and select one canonical channel target."},
{"name": "select_default_or_search_channel_target", "summary": "Choose one configured default channel or fall back to manual Slack channel search."}
]
},
{
"name": "Messaging",
"steps": [
{"name": "prepare_message_destination", "summary": "Resolve the selected Slack user or channel target into the destination conversation used for posting."},
{"name": "open_direct_message", "summary": "Open or reuse a direct message conversation for the selected user target."},
{"name": "prompt_message_body", "summary": "Capture a multiline Slack message body for later posting."},
{"name": "post_message", "summary": "Post the prepared message to the selected Slack conversation."}
]
},
{
"name": "Conversation Summaries",
"steps": [
{"name": "select_target", "summary": "Search both users and channels and select one unified Slack target."},
{"name": "ensure_target_conversation", "summary": "Resolve a Slack conversation from the selected target."},
{"name": "read_recent_messages", "summary": "Read the most recent messages from the resolved Slack conversation."},
{"name": "ai_summarize_messages", "summary": "Summarize the retrieved Slack messages with AI."}
]
}
]
}
Loading