@misterhuydo/sentinel 1.5.22 → 1.5.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cairn/.hint-lock +1 -1
- package/.cairn/session.json +8 -3
- package/package.json +1 -1
- package/python/sentinel/__init__.py +1 -1
- package/python/sentinel/slack_bot.py +138 -0
package/.cairn/.hint-lock
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2026-04-08T16:
|
|
1
|
+
2026-04-08T16:40:44.178Z
|
package/.cairn/session.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"message": "Auto-checkpoint at 2026-04-08T16:
|
|
3
|
-
"checkpoint_at": "2026-04-08T16:
|
|
2
|
+
"message": "Auto-checkpoint at 2026-04-08T16:47:13.880Z",
|
|
3
|
+
"checkpoint_at": "2026-04-08T16:47:13.973Z",
|
|
4
4
|
"active_files": [
|
|
5
5
|
"J:\\Projects\\Sentinel\\cli\\bin\\sentinel.js",
|
|
6
6
|
"J:\\Projects\\Sentinel\\cli\\lib\\test.js",
|
|
@@ -32,7 +32,12 @@
|
|
|
32
32
|
"[2026-04-08] git-snapshot: .cairn/session.json | 29 ++++-\n .claude/settings.local.json | 47 ++++++-\n cli/.cairn/.hint-lock | 2 +-\n cli/.cairn/minify-map.json | 8 +-\n cli/.cairn/session.json | 41 ++++++-\n cli/.cairn/views/62a614_bundle.js | 6 +-\n cli/lib/.cairn/minify-map.json | 6 +\n cli/lib/.cairn/views/fb78ac_upgrade.js | 37 +++++-\n cli/lib/.cairn/views/fc4a1a_add.js | 215 +++++++++++++++++++++++++--------\n cli/package.json | 2 +-\n sentinel/config_loader.py | 83 ++++++++++---\n sentinel/dependency_manager.py | 4 +-\n sentinel/git_manager.py | 22 ++--\n sentinel/main.py | 48 +++++---\n sentinel/repo_task_engine.py | 18 ++-\n sentinel/sentinel_boss.py | 43 ++++---\n sentinel/state_store.py | 37 ++++++\n 17 files changed, 517 insertions(+), 131 deletions(-) | status: M ../.cairn/session.json\n M ../.claude/settings.local.json\n M .cairn/.hint-lock\n M .cairn/minify-map.json\n M .cairn/session.json\n M .cairn/views/62a614_bundle.js\n M lib/.cairn/minify-map.json\n M lib/.cairn/views/fb78ac_upgrade.js\n M lib/.cairn/views/fc4a1a_add.js\n M package.json\n M ../sentinel/config_loader.py\n M ../sentinel/dependency_manager.py\n M ../sentinel/git_manager.py\n M ../sentinel/main.py\n M ../sentinel/repo_task_engine.py\n M ../sentinel/sentinel_boss.py\n M ../sentinel/state_store.py\n?? ../.cairn/.cairn-project\n?? ../.cairn/memory/\n?? ../.cairn/minify-map.json\n?? ../.cairn/views/\n?? .cairn/views/23edf4_sentinel_boss.py\n?? .cairn/views/7802b9_cicd_trigger.py\n?? .cairn/views/ac3df4_repo_task_engine.py\n?? lib/.cairn/views/2a85cc_init.js\n?? lib/.cairn/views/e26996_slack-setup.js\n?? ../scripts/fix_ask_codebase_context.py\n?? ../scripts/fix_ask_codebase_stdin.py\n?? ../scripts/fix_chain_slack.py\n?? ../scripts/fix_fstring.py\n?? ../scripts/fix_knowledge_cache.py\n?? ../scripts/fix_knowledge_cache_staleness.py\n?? ../scripts/fix_merge_confirm.py\n?? ../scripts/fix_permission_messages.py\n?? ../scripts/fix_pr_check_head_detect.py\n?? ../scripts/fix_pr_msg_newlines.py\n?? ../scripts/fix_pr_tracking_boss.py\n?? ../scripts/fix_pr_tracking_db.py\n?? ../scripts/fix_pr_tracking_main.py\n?? ../scripts/fix_project_isolation.py\n?? ../scripts/fix_system_prompt.py\n?? ../scripts/fix_two_bugs.py\n?? ../scripts/patch_chain_release.py",
|
|
33
33
|
"[2026-04-08] git-snapshot: .cairn/session.json | 29 ++++-\n .claude/settings.local.json | 47 ++++++-\n cli/.cairn/.hint-lock | 2 +-\n cli/.cairn/minify-map.json | 8 +-\n cli/.cairn/session.json | 42 ++++++-\n cli/.cairn/views/62a614_bundle.js | 6 +-\n cli/lib/.cairn/minify-map.json | 6 +\n cli/lib/.cairn/views/fb78ac_upgrade.js | 37 +++++-\n cli/lib/.cairn/views/fc4a1a_add.js | 215 +++++++++++++++++++++++++--------\n cli/package.json | 2 +-\n sentinel/config_loader.py | 83 ++++++++++---\n sentinel/dependency_manager.py | 4 +-\n sentinel/git_manager.py | 22 ++--\n sentinel/main.py | 48 +++++---\n sentinel/repo_task_engine.py | 18 ++-\n sentinel/sentinel_boss.py | 43 ++++---\n sentinel/state_store.py | 37 ++++++\n 17 files changed, 518 insertions(+), 131 deletions(-) | status: M ../.cairn/session.json\n M ../.claude/settings.local.json\n M .cairn/.hint-lock\n M .cairn/minify-map.json\n M .cairn/session.json\n M .cairn/views/62a614_bundle.js\n M lib/.cairn/minify-map.json\n M lib/.cairn/views/fb78ac_upgrade.js\n M lib/.cairn/views/fc4a1a_add.js\n M package.json\n M ../sentinel/config_loader.py\n M ../sentinel/dependency_manager.py\n M ../sentinel/git_manager.py\n M ../sentinel/main.py\n M ../sentinel/repo_task_engine.py\n M ../sentinel/sentinel_boss.py\n M ../sentinel/state_store.py\n?? ../.cairn/.cairn-project\n?? ../.cairn/memory/\n?? ../.cairn/minify-map.json\n?? ../.cairn/views/\n?? .cairn/views/23edf4_sentinel_boss.py\n?? .cairn/views/7802b9_cicd_trigger.py\n?? .cairn/views/ac3df4_repo_task_engine.py\n?? lib/.cairn/views/2a85cc_init.js\n?? lib/.cairn/views/e26996_slack-setup.js\n?? ../scripts/fix_ask_codebase_context.py\n?? ../scripts/fix_ask_codebase_stdin.py\n?? ../scripts/fix_chain_slack.py\n?? ../scripts/fix_fstring.py\n?? ../scripts/fix_knowledge_cache.py\n?? ../scripts/fix_knowledge_cache_staleness.py\n?? ../scripts/fix_merge_confirm.py\n?? ../scripts/fix_permission_messages.py\n?? ../scripts/fix_pr_check_head_detect.py\n?? ../scripts/fix_pr_msg_newlines.py\n?? ../scripts/fix_pr_tracking_boss.py\n?? ../scripts/fix_pr_tracking_db.py\n?? ../scripts/fix_pr_tracking_main.py\n?? ../scripts/fix_project_isolation.py\n?? ../scripts/fix_system_prompt.py\n?? ../scripts/fix_two_bugs.py\n?? ../scripts/patch_chain_release.py",
|
|
34
34
|
"[2026-04-08] git-snapshot: .cairn/session.json | 29 ++++-\n .claude/settings.local.json | 47 ++++++-\n cli/.cairn/.hint-lock | 2 +-\n cli/.cairn/minify-map.json | 8 +-\n cli/.cairn/session.json | 43 ++++++-\n cli/.cairn/views/62a614_bundle.js | 6 +-\n cli/lib/.cairn/minify-map.json | 6 +\n cli/lib/.cairn/views/fb78ac_upgrade.js | 37 +++++-\n cli/lib/.cairn/views/fc4a1a_add.js | 215 +++++++++++++++++++++++++--------\n cli/package.json | 2 +-\n sentinel/config_loader.py | 83 ++++++++++---\n sentinel/dependency_manager.py | 4 +-\n sentinel/dev_watcher.py | 8 +-\n sentinel/git_manager.py | 22 ++--\n sentinel/main.py | 67 ++++++----\n sentinel/repo_task_engine.py | 18 ++-\n sentinel/sentinel_boss.py | 44 ++++---\n sentinel/state_store.py | 37 ++++++\n tests/test_config_loader.py | 8 +-\n 19 files changed, 540 insertions(+), 146 deletions(-) | status: M ../.cairn/session.json\n M ../.claude/settings.local.json\n M .cairn/.hint-lock\n M .cairn/minify-map.json\n M .cairn/session.json\n M .cairn/views/62a614_bundle.js\n M lib/.cairn/minify-map.json\n M lib/.cairn/views/fb78ac_upgrade.js\n M lib/.cairn/views/fc4a1a_add.js\n M package.json\n M ../sentinel/config_loader.py\n M ../sentinel/dependency_manager.py\n M ../sentinel/dev_watcher.py\n M ../sentinel/git_manager.py\n M ../sentinel/main.py\n M ../sentinel/repo_task_engine.py\n M ../sentinel/sentinel_boss.py\n M ../sentinel/state_store.py\n M ../tests/test_config_loader.py\n?? ../.cairn/.cairn-project\n?? ../.cairn/memory/\n?? ../.cairn/minify-map.json\n?? ../.cairn/views/\n?? .cairn/views/23edf4_sentinel_boss.py\n?? .cairn/views/7802b9_cicd_trigger.py\n?? .cairn/views/ac3df4_repo_task_engine.py\n?? lib/.cairn/views/2a85cc_init.js\n?? lib/.cairn/views/e26996_slack-setup.js\n?? ../scripts/fix_ask_codebase_context.py\n?? ../scripts/fix_ask_codebase_stdin.py\n?? ../scripts/fix_chain_slack.py\n?? ../scripts/fix_fstring.py\n?? ../scripts/fix_knowledge_cache.py\n?? ../scripts/fix_knowledge_cache_staleness.py\n?? ../scripts/fix_merge_confirm.py\n?? ../scripts/fix_permission_messages.py\n?? ../scripts/fix_pr_check_head_detect.py\n?? ../scripts/fix_pr_msg_newlines.py\n?? ../scripts/fix_pr_tracking_boss.py\n?? ../scripts/fix_pr_tracking_db.py\n?? ../scripts/fix_pr_tracking_main.py\n?? ../scripts/fix_project_isolation.py\n?? ../scripts/fix_system_prompt.py\n?? ../scripts/fix_two_bugs.py\n?? ../scripts/patch_chain_release.py",
|
|
35
|
-
"[2026-04-08] git-snapshot: .cairn/session.json | 29 ++++-\n .claude/settings.local.json | 47 ++++++-\n cli/.cairn/.hint-lock | 2 +-\n cli/.cairn/minify-map.json | 8 +-\n cli/.cairn/session.json | 44 ++++++-\n cli/.cairn/views/62a614_bundle.js | 6 +-\n cli/lib/.cairn/minify-map.json | 6 +\n cli/lib/.cairn/views/fb78ac_upgrade.js | 37 +++++-\n cli/lib/.cairn/views/fc4a1a_add.js | 215 +++++++++++++++++++++++++--------\n cli/package.json | 2 +-\n sentinel/config_loader.py | 83 ++++++++++---\n sentinel/dependency_manager.py | 4 +-\n sentinel/dev_watcher.py | 11 +-\n sentinel/git_manager.py | 22 ++--\n sentinel/main.py | 107 +++++++++++-----\n sentinel/repo_task_engine.py | 18 ++-\n sentinel/sentinel_boss.py | 44 ++++---\n sentinel/state_store.py | 37 ++++++\n tests/test_config_loader.py | 8 +-\n 19 files changed, 578 insertions(+), 152 deletions(-) | status: M ../.cairn/session.json\n M ../.claude/settings.local.json\n M .cairn/.hint-lock\n M .cairn/minify-map.json\n M .cairn/session.json\n M .cairn/views/62a614_bundle.js\n M lib/.cairn/minify-map.json\n M lib/.cairn/views/fb78ac_upgrade.js\n M lib/.cairn/views/fc4a1a_add.js\n M package.json\n M ../sentinel/config_loader.py\n M ../sentinel/dependency_manager.py\n M ../sentinel/dev_watcher.py\n M ../sentinel/git_manager.py\n M ../sentinel/main.py\n M ../sentinel/repo_task_engine.py\n M ../sentinel/sentinel_boss.py\n M ../sentinel/state_store.py\n M ../tests/test_config_loader.py\n?? ../.cairn/.cairn-project\n?? ../.cairn/memory/\n?? ../.cairn/minify-map.json\n?? ../.cairn/views/\n?? .cairn/views/23edf4_sentinel_boss.py\n?? .cairn/views/7802b9_cicd_trigger.py\n?? .cairn/views/ac3df4_repo_task_engine.py\n?? lib/.cairn/views/2a85cc_init.js\n?? lib/.cairn/views/e26996_slack-setup.js\n?? ../scripts/fix_ask_codebase_context.py\n?? ../scripts/fix_ask_codebase_stdin.py\n?? ../scripts/fix_chain_slack.py\n?? ../scripts/fix_fstring.py\n?? ../scripts/fix_knowledge_cache.py\n?? ../scripts/fix_knowledge_cache_staleness.py\n?? ../scripts/fix_merge_confirm.py\n?? ../scripts/fix_permission_messages.py\n?? ../scripts/fix_pr_check_head_detect.py\n?? ../scripts/fix_pr_msg_newlines.py\n?? ../scripts/fix_pr_tracking_boss.py\n?? ../scripts/fix_pr_tracking_db.py\n?? ../scripts/fix_pr_tracking_main.py\n?? ../scripts/fix_project_isolation.py\n?? ../scripts/fix_system_prompt.py\n?? ../scripts/fix_two_bugs.py\n?? ../scripts/patch_chain_release.py"
|
|
35
|
+
"[2026-04-08] git-snapshot: .cairn/session.json | 29 ++++-\n .claude/settings.local.json | 47 ++++++-\n cli/.cairn/.hint-lock | 2 +-\n cli/.cairn/minify-map.json | 8 +-\n cli/.cairn/session.json | 44 ++++++-\n cli/.cairn/views/62a614_bundle.js | 6 +-\n cli/lib/.cairn/minify-map.json | 6 +\n cli/lib/.cairn/views/fb78ac_upgrade.js | 37 +++++-\n cli/lib/.cairn/views/fc4a1a_add.js | 215 +++++++++++++++++++++++++--------\n cli/package.json | 2 +-\n sentinel/config_loader.py | 83 ++++++++++---\n sentinel/dependency_manager.py | 4 +-\n sentinel/dev_watcher.py | 11 +-\n sentinel/git_manager.py | 22 ++--\n sentinel/main.py | 107 +++++++++++-----\n sentinel/repo_task_engine.py | 18 ++-\n sentinel/sentinel_boss.py | 44 ++++---\n sentinel/state_store.py | 37 ++++++\n tests/test_config_loader.py | 8 +-\n 19 files changed, 578 insertions(+), 152 deletions(-) | status: M ../.cairn/session.json\n M ../.claude/settings.local.json\n M .cairn/.hint-lock\n M .cairn/minify-map.json\n M .cairn/session.json\n M .cairn/views/62a614_bundle.js\n M lib/.cairn/minify-map.json\n M lib/.cairn/views/fb78ac_upgrade.js\n M lib/.cairn/views/fc4a1a_add.js\n M package.json\n M ../sentinel/config_loader.py\n M ../sentinel/dependency_manager.py\n M ../sentinel/dev_watcher.py\n M ../sentinel/git_manager.py\n M ../sentinel/main.py\n M ../sentinel/repo_task_engine.py\n M ../sentinel/sentinel_boss.py\n M ../sentinel/state_store.py\n M ../tests/test_config_loader.py\n?? ../.cairn/.cairn-project\n?? ../.cairn/memory/\n?? ../.cairn/minify-map.json\n?? ../.cairn/views/\n?? .cairn/views/23edf4_sentinel_boss.py\n?? .cairn/views/7802b9_cicd_trigger.py\n?? .cairn/views/ac3df4_repo_task_engine.py\n?? lib/.cairn/views/2a85cc_init.js\n?? lib/.cairn/views/e26996_slack-setup.js\n?? ../scripts/fix_ask_codebase_context.py\n?? ../scripts/fix_ask_codebase_stdin.py\n?? ../scripts/fix_chain_slack.py\n?? ../scripts/fix_fstring.py\n?? ../scripts/fix_knowledge_cache.py\n?? ../scripts/fix_knowledge_cache_staleness.py\n?? ../scripts/fix_merge_confirm.py\n?? ../scripts/fix_permission_messages.py\n?? ../scripts/fix_pr_check_head_detect.py\n?? ../scripts/fix_pr_msg_newlines.py\n?? ../scripts/fix_pr_tracking_boss.py\n?? ../scripts/fix_pr_tracking_db.py\n?? ../scripts/fix_pr_tracking_main.py\n?? ../scripts/fix_project_isolation.py\n?? ../scripts/fix_system_prompt.py\n?? ../scripts/fix_two_bugs.py\n?? ../scripts/patch_chain_release.py",
|
|
36
|
+
"[2026-04-08] git-snapshot: .cairn/session.json | 29 ++++-\n .claude/settings.local.json | 47 ++++++-\n cli/.cairn/.hint-lock | 2 +-\n cli/.cairn/minify-map.json | 8 +-\n cli/.cairn/session.json | 45 ++++++-\n cli/.cairn/views/62a614_bundle.js | 6 +-\n cli/lib/.cairn/minify-map.json | 6 +\n cli/lib/.cairn/views/fb78ac_upgrade.js | 37 +++++-\n cli/lib/.cairn/views/fc4a1a_add.js | 215 +++++++++++++++++++++++++--------\n cli/lib/generate.js | 6 +-\n cli/package.json | 2 +-\n sentinel/config_loader.py | 83 ++++++++++---\n sentinel/dependency_manager.py | 4 +-\n sentinel/dev_watcher.py | 11 +-\n sentinel/git_manager.py | 22 ++--\n sentinel/main.py | 107 +++++++++++-----\n sentinel/repo_task_engine.py | 18 ++-\n sentinel/sentinel_boss.py | 44 ++++---\n sentinel/state_store.py | 37 ++++++\n tests/test_config_loader.py | 8 +-\n 20 files changed, 584 insertions(+), 153 deletions(-) | status: M ../.cairn/session.json\n M ../.claude/settings.local.json\n M .cairn/.hint-lock\n M .cairn/minify-map.json\n M .cairn/session.json\n M .cairn/views/62a614_bundle.js\n M lib/.cairn/minify-map.json\n M lib/.cairn/views/fb78ac_upgrade.js\n M lib/.cairn/views/fc4a1a_add.js\n M lib/generate.js\n M package.json\n M ../sentinel/config_loader.py\n M ../sentinel/dependency_manager.py\n M ../sentinel/dev_watcher.py\n M ../sentinel/git_manager.py\n M ../sentinel/main.py\n M ../sentinel/repo_task_engine.py\n M ../sentinel/sentinel_boss.py\n M ../sentinel/state_store.py\n M ../tests/test_config_loader.py\n?? ../.cairn/.cairn-project\n?? ../.cairn/memory/\n?? ../.cairn/minify-map.json\n?? ../.cairn/views/\n?? .cairn/views/23edf4_sentinel_boss.py\n?? .cairn/views/7802b9_cicd_trigger.py\n?? .cairn/views/ac3df4_repo_task_engine.py\n?? lib/.cairn/views/2a85cc_init.js\n?? lib/.cairn/views/e26996_slack-setup.js\n?? ../scripts/fix_ask_codebase_context.py\n?? ../scripts/fix_ask_codebase_stdin.py\n?? ../scripts/fix_chain_slack.py\n?? ../scripts/fix_fstring.py\n?? ../scripts/fix_knowledge_cache.py\n?? ../scripts/fix_knowledge_cache_staleness.py\n?? ../scripts/fix_merge_confirm.py\n?? ../scripts/fix_permission_messages.py\n?? ../scripts/fix_pr_check_head_detect.py\n?? ../scripts/fix_pr_msg_newlines.py\n?? ../scripts/fix_pr_tracking_boss.py\n?? ../scripts/fix_pr_tracking_db.py\n?? ../scripts/fix_pr_tracking_main.py\n?? ../scripts/fix_project_isolation.py\n?? ../scripts/fix_system_prompt.py\n?? ../scripts/fix_two_bugs.py\n?? ../scripts/patch_chain_release.py",
|
|
37
|
+
"[2026-04-08] git-snapshot: .cairn/session.json | 29 ++++-\n .claude/settings.local.json | 47 ++++++-\n cli/.cairn/.hint-lock | 2 +-\n cli/.cairn/minify-map.json | 8 +-\n cli/.cairn/session.json | 46 ++++++-\n cli/.cairn/views/62a614_bundle.js | 6 +-\n cli/lib/.cairn/minify-map.json | 6 +\n cli/lib/.cairn/views/fb78ac_upgrade.js | 37 +++++-\n cli/lib/.cairn/views/fc4a1a_add.js | 215 +++++++++++++++++++++++++--------\n cli/lib/generate.js | 6 +-\n cli/package.json | 2 +-\n sentinel/config_loader.py | 83 ++++++++++---\n sentinel/dependency_manager.py | 4 +-\n sentinel/dev_watcher.py | 11 +-\n sentinel/git_manager.py | 22 ++--\n sentinel/main.py | 107 +++++++++++-----\n sentinel/repo_task_engine.py | 18 ++-\n sentinel/sentinel_boss.py | 44 ++++---\n sentinel/state_store.py | 37 ++++++\n tests/test_config_loader.py | 8 +-\n 20 files changed, 585 insertions(+), 153 deletions(-) | status: M ../.cairn/session.json\n M ../.claude/settings.local.json\n M .cairn/.hint-lock\n M .cairn/minify-map.json\n M .cairn/session.json\n M .cairn/views/62a614_bundle.js\n M lib/.cairn/minify-map.json\n M lib/.cairn/views/fb78ac_upgrade.js\n M lib/.cairn/views/fc4a1a_add.js\n M lib/generate.js\n M package.json\n M ../sentinel/config_loader.py\n M ../sentinel/dependency_manager.py\n M ../sentinel/dev_watcher.py\n M ../sentinel/git_manager.py\n M ../sentinel/main.py\n M ../sentinel/repo_task_engine.py\n M ../sentinel/sentinel_boss.py\n M ../sentinel/state_store.py\n M ../tests/test_config_loader.py\n?? ../.cairn/.cairn-project\n?? ../.cairn/memory/\n?? ../.cairn/minify-map.json\n?? ../.cairn/views/\n?? .cairn/views/23edf4_sentinel_boss.py\n?? .cairn/views/7802b9_cicd_trigger.py\n?? .cairn/views/ac3df4_repo_task_engine.py\n?? lib/.cairn/views/2a85cc_init.js\n?? lib/.cairn/views/e26996_slack-setup.js\n?? ../scripts/fix_ask_codebase_context.py\n?? ../scripts/fix_ask_codebase_stdin.py\n?? ../scripts/fix_chain_slack.py\n?? ../scripts/fix_fstring.py\n?? ../scripts/fix_knowledge_cache.py\n?? ../scripts/fix_knowledge_cache_staleness.py\n?? ../scripts/fix_merge_confirm.py\n?? ../scripts/fix_permission_messages.py\n?? ../scripts/fix_pr_check_head_detect.py\n?? ../scripts/fix_pr_msg_newlines.py\n?? ../scripts/fix_pr_tracking_boss.py\n?? ../scripts/fix_pr_tracking_db.py\n?? ../scripts/fix_pr_tracking_main.py\n?? ../scripts/fix_project_isolation.py\n?? ../scripts/fix_system_prompt.py\n?? ../scripts/fix_two_bugs.py\n?? ../scripts/patch_chain_release.py",
|
|
38
|
+
"[2026-04-08] git-snapshot: .cairn/session.json | 29 ++++-\n .claude/settings.local.json | 47 ++++++-\n cli/.cairn/.hint-lock | 2 +-\n cli/.cairn/minify-map.json | 8 +-\n cli/.cairn/session.json | 47 ++++++-\n cli/.cairn/views/62a614_bundle.js | 6 +-\n cli/lib/.cairn/minify-map.json | 6 +\n cli/lib/.cairn/views/fb78ac_upgrade.js | 37 +++++-\n cli/lib/.cairn/views/fc4a1a_add.js | 215 +++++++++++++++++++++++++--------\n cli/lib/generate.js | 6 +-\n cli/package.json | 2 +-\n sentinel/config_loader.py | 83 ++++++++++---\n sentinel/dependency_manager.py | 4 +-\n sentinel/dev_watcher.py | 11 +-\n sentinel/git_manager.py | 22 ++--\n sentinel/main.py | 107 +++++++++++-----\n sentinel/repo_task_engine.py | 18 ++-\n sentinel/sentinel_boss.py | 44 ++++---\n sentinel/state_store.py | 37 ++++++\n tests/test_config_loader.py | 8 +-\n 20 files changed, 586 insertions(+), 153 deletions(-) | status: M ../.cairn/session.json\n M ../.claude/settings.local.json\n M .cairn/.hint-lock\n M .cairn/minify-map.json\n M .cairn/session.json\n M .cairn/views/62a614_bundle.js\n M lib/.cairn/minify-map.json\n M lib/.cairn/views/fb78ac_upgrade.js\n M lib/.cairn/views/fc4a1a_add.js\n M lib/generate.js\n M package.json\n M ../sentinel/config_loader.py\n M ../sentinel/dependency_manager.py\n M ../sentinel/dev_watcher.py\n M ../sentinel/git_manager.py\n M ../sentinel/main.py\n M ../sentinel/repo_task_engine.py\n M ../sentinel/sentinel_boss.py\n M ../sentinel/state_store.py\n M ../tests/test_config_loader.py\n?? ../.cairn/.cairn-project\n?? ../.cairn/memory/\n?? ../.cairn/minify-map.json\n?? ../.cairn/views/\n?? .cairn/views/23edf4_sentinel_boss.py\n?? .cairn/views/7802b9_cicd_trigger.py\n?? .cairn/views/ac3df4_repo_task_engine.py\n?? lib/.cairn/views/2a85cc_init.js\n?? lib/.cairn/views/e26996_slack-setup.js\n?? ../scripts/fix_ask_codebase_context.py\n?? ../scripts/fix_ask_codebase_stdin.py\n?? ../scripts/fix_chain_slack.py\n?? ../scripts/fix_fstring.py\n?? ../scripts/fix_knowledge_cache.py\n?? ../scripts/fix_knowledge_cache_staleness.py\n?? ../scripts/fix_merge_confirm.py\n?? ../scripts/fix_permission_messages.py\n?? ../scripts/fix_pr_check_head_detect.py\n?? ../scripts/fix_pr_msg_newlines.py\n?? ../scripts/fix_pr_tracking_boss.py\n?? ../scripts/fix_pr_tracking_db.py\n?? ../scripts/fix_pr_tracking_main.py\n?? ../scripts/fix_project_isolation.py\n?? ../scripts/fix_system_prompt.py\n?? ../scripts/fix_two_bugs.py\n?? ../scripts/patch_chain_release.py",
|
|
39
|
+
"[2026-04-08] git-snapshot: .cairn/session.json | 29 ++++-\n .claude/settings.local.json | 47 ++++++-\n cli/.cairn/.hint-lock | 2 +-\n cli/.cairn/minify-map.json | 8 +-\n cli/.cairn/session.json | 48 +++++++-\n cli/.cairn/views/62a614_bundle.js | 6 +-\n cli/lib/.cairn/minify-map.json | 6 +\n cli/lib/.cairn/views/fb78ac_upgrade.js | 37 +++++-\n cli/lib/.cairn/views/fc4a1a_add.js | 215 +++++++++++++++++++++++++--------\n cli/lib/generate.js | 6 +-\n cli/package.json | 2 +-\n sentinel/config_loader.py | 83 ++++++++++---\n sentinel/dependency_manager.py | 4 +-\n sentinel/dev_watcher.py | 11 +-\n sentinel/git_manager.py | 22 ++--\n sentinel/main.py | 107 +++++++++++-----\n sentinel/repo_task_engine.py | 18 ++-\n sentinel/sentinel_boss.py | 44 ++++---\n sentinel/slack_bot.py | 135 +++++++++++++++++++++\n sentinel/state_store.py | 37 ++++++\n tests/test_config_loader.py | 8 +-\n 21 files changed, 722 insertions(+), 153 deletions(-) | status: M ../.cairn/session.json\n M ../.claude/settings.local.json\n M .cairn/.hint-lock\n M .cairn/minify-map.json\n M .cairn/session.json\n M .cairn/views/62a614_bundle.js\n M lib/.cairn/minify-map.json\n M lib/.cairn/views/fb78ac_upgrade.js\n M lib/.cairn/views/fc4a1a_add.js\n M lib/generate.js\n M package.json\n M ../sentinel/config_loader.py\n M ../sentinel/dependency_manager.py\n M ../sentinel/dev_watcher.py\n M ../sentinel/git_manager.py\n M ../sentinel/main.py\n M ../sentinel/repo_task_engine.py\n M ../sentinel/sentinel_boss.py\n M ../sentinel/slack_bot.py\n M ../sentinel/state_store.py\n M ../tests/test_config_loader.py\n?? ../.cairn/.cairn-project\n?? ../.cairn/memory/\n?? ../.cairn/minify-map.json\n?? ../.cairn/views/\n?? .cairn/views/23edf4_sentinel_boss.py\n?? .cairn/views/7802b9_cicd_trigger.py\n?? .cairn/views/ac3df4_repo_task_engine.py\n?? lib/.cairn/views/2a85cc_init.js\n?? lib/.cairn/views/e26996_slack-setup.js\n?? ../scripts/fix_ask_codebase_context.py\n?? ../scripts/fix_ask_codebase_stdin.py\n?? ../scripts/fix_chain_slack.py\n?? ../scripts/fix_fstring.py\n?? ../scripts/fix_knowledge_cache.py\n?? ../scripts/fix_knowledge_cache_staleness.py\n?? ../scripts/fix_merge_confirm.py\n?? ../scripts/fix_permission_messages.py\n?? ../scripts/fix_pr_check_head_detect.py\n?? ../scripts/fix_pr_msg_newlines.py\n?? ../scripts/fix_pr_tracking_boss.py\n?? ../scripts/fix_pr_tracking_db.py\n?? ../scripts/fix_pr_tracking_main.py\n?? ../scripts/fix_project_isolation.py\n?? ../scripts/fix_system_prompt.py\n?? ../scripts/fix_two_bugs.py\n?? ../scripts/patch_chain_release.py",
|
|
40
|
+
"[2026-04-08] git-snapshot: .cairn/session.json | 29 ++++-\n .claude/settings.local.json | 47 ++++++-\n cli/.cairn/.hint-lock | 2 +-\n cli/.cairn/minify-map.json | 8 +-\n cli/.cairn/session.json | 49 +++++++-\n cli/.cairn/views/62a614_bundle.js | 6 +-\n cli/lib/.cairn/minify-map.json | 6 +\n cli/lib/.cairn/views/fb78ac_upgrade.js | 37 +++++-\n cli/lib/.cairn/views/fc4a1a_add.js | 215 +++++++++++++++++++++++++--------\n cli/lib/generate.js | 6 +-\n cli/package.json | 2 +-\n sentinel/config_loader.py | 83 ++++++++++---\n sentinel/dependency_manager.py | 4 +-\n sentinel/dev_watcher.py | 11 +-\n sentinel/git_manager.py | 22 ++--\n sentinel/main.py | 107 +++++++++++-----\n sentinel/repo_task_engine.py | 18 ++-\n sentinel/sentinel_boss.py | 44 ++++---\n sentinel/slack_bot.py | 135 +++++++++++++++++++++\n sentinel/state_store.py | 37 ++++++\n tests/test_config_loader.py | 8 +-\n 21 files changed, 723 insertions(+), 153 deletions(-) | status: M ../.cairn/session.json\n M ../.claude/settings.local.json\n M .cairn/.hint-lock\n M .cairn/minify-map.json\n M .cairn/session.json\n M .cairn/views/62a614_bundle.js\n M lib/.cairn/minify-map.json\n M lib/.cairn/views/fb78ac_upgrade.js\n M lib/.cairn/views/fc4a1a_add.js\n M lib/generate.js\n M package.json\n M ../sentinel/config_loader.py\n M ../sentinel/dependency_manager.py\n M ../sentinel/dev_watcher.py\n M ../sentinel/git_manager.py\n M ../sentinel/main.py\n M ../sentinel/repo_task_engine.py\n M ../sentinel/sentinel_boss.py\n M ../sentinel/slack_bot.py\n M ../sentinel/state_store.py\n M ../tests/test_config_loader.py\n?? ../.cairn/.cairn-project\n?? ../.cairn/memory/\n?? ../.cairn/minify-map.json\n?? ../.cairn/views/\n?? .cairn/views/23edf4_sentinel_boss.py\n?? .cairn/views/7802b9_cicd_trigger.py\n?? .cairn/views/ac3df4_repo_task_engine.py\n?? lib/.cairn/views/2a85cc_init.js\n?? lib/.cairn/views/e26996_slack-setup.js\n?? ../scripts/fix_ask_codebase_context.py\n?? ../scripts/fix_ask_codebase_stdin.py\n?? ../scripts/fix_chain_slack.py\n?? ../scripts/fix_fstring.py\n?? ../scripts/fix_knowledge_cache.py\n?? ../scripts/fix_knowledge_cache_staleness.py\n?? ../scripts/fix_merge_confirm.py\n?? ../scripts/fix_permission_messages.py\n?? ../scripts/fix_pr_check_head_detect.py\n?? ../scripts/fix_pr_msg_newlines.py\n?? ../scripts/fix_pr_tracking_boss.py\n?? ../scripts/fix_pr_tracking_db.py\n?? ../scripts/fix_pr_tracking_main.py\n?? ../scripts/fix_project_isolation.py\n?? ../scripts/fix_system_prompt.py\n?? ../scripts/fix_two_bugs.py\n?? ../scripts/patch_chain_release.py"
|
|
36
41
|
],
|
|
37
42
|
"mtime_snapshot": {
|
|
38
43
|
"J:\\Projects\\Sentinel\\cli\\bin\\sentinel.js": 1774252515044.4768,
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "1.5.
|
|
1
|
+
__version__ = "1.5.24"
|
|
@@ -347,6 +347,137 @@ async def _fetch_attachments(event: dict, client, workspace_dir: str) -> list[di
|
|
|
347
347
|
return results
|
|
348
348
|
|
|
349
349
|
|
|
350
|
+
# ── Nexus credential handler ──────────────────────────────────────────────────
|
|
351
|
+
|
|
352
|
+
def _drop_nexus_patch_task(cfg_loader, settings_xml: str, user_id: str, channel: str) -> bool:
|
|
353
|
+
"""
|
|
354
|
+
Drop a Patch dev-task that writes the provided settings.xml to ~/.m2/settings.xml.
|
|
355
|
+
Returns True if the task was successfully queued.
|
|
356
|
+
"""
|
|
357
|
+
from pathlib import Path as _P
|
|
358
|
+
import time as _time, uuid as _uuid
|
|
359
|
+
from datetime import datetime as _dt, timezone as _tz
|
|
360
|
+
|
|
361
|
+
sentinel = cfg_loader.sentinel
|
|
362
|
+
if not sentinel.sentinel_dev_repo_path:
|
|
363
|
+
return False
|
|
364
|
+
|
|
365
|
+
project_dir = _P(sentinel.sentinel_dev_repo_path).parent
|
|
366
|
+
dev_tasks_dir = project_dir / "dev-tasks"
|
|
367
|
+
dev_tasks_dir.mkdir(exist_ok=True)
|
|
368
|
+
|
|
369
|
+
# Escape backticks inside the XML so the heredoc stays intact
|
|
370
|
+
safe_xml = settings_xml.replace("\\", "\\\\").replace("`", "\\`")
|
|
371
|
+
|
|
372
|
+
fname = f"slack-nexus-{_uuid.uuid4().hex[:8]}-{int(_time.time())}.txt"
|
|
373
|
+
lines = [
|
|
374
|
+
"TYPE: fix",
|
|
375
|
+
f"SUBMITTED_BY: <@{user_id}> ({user_id})",
|
|
376
|
+
"SOURCE: boss",
|
|
377
|
+
f"SUBMITTED_AT: {_dt.now(_tz.utc).isoformat()}",
|
|
378
|
+
f"ORIGIN_CHANNEL: {channel}",
|
|
379
|
+
"",
|
|
380
|
+
"Install Maven Nexus credentials into ~/.m2/settings.xml on this server.",
|
|
381
|
+
"",
|
|
382
|
+
"Steps:",
|
|
383
|
+
"1. Create the directory: mkdir -p ~/.m2",
|
|
384
|
+
"2. Write the following content exactly to ~/.m2/settings.xml:",
|
|
385
|
+
"",
|
|
386
|
+
f"```xml\n{safe_xml}\n```",
|
|
387
|
+
"",
|
|
388
|
+
"3. Verify the file was written correctly: confirm it contains the expected <servers> block.",
|
|
389
|
+
"4. Do NOT modify any source code or commit anything — this is a server config change only.",
|
|
390
|
+
]
|
|
391
|
+
(_P(dev_tasks_dir) / fname).write_text("\n".join(lines), encoding="utf-8")
|
|
392
|
+
logger.info("Nexus credentials patch task queued: %s (user=%s)", fname, user_id)
|
|
393
|
+
return True
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
async def _handle_nexus_input(
|
|
397
|
+
text: str, user_id: str, channel: str, client, cfg_loader, is_admin: bool
|
|
398
|
+
) -> bool:
|
|
399
|
+
"""
|
|
400
|
+
Intercept nexus credential messages before they reach the Boss LLM.
|
|
401
|
+
Returns True if the message was handled (caller should skip Boss turn).
|
|
402
|
+
|
|
403
|
+
Accepted formats:
|
|
404
|
+
nexus settings <XML> — full settings.xml paste
|
|
405
|
+
nexus creds <id> <user> <pw> — single server entry
|
|
406
|
+
<?xml...>...<servers>... — raw settings.xml paste (no prefix needed)
|
|
407
|
+
"""
|
|
408
|
+
import re as _re
|
|
409
|
+
import html as _html
|
|
410
|
+
|
|
411
|
+
# Slack HTML-encodes < > & in message text — decode before any XML checks
|
|
412
|
+
text = _html.unescape(text)
|
|
413
|
+
lower = text.lower().lstrip()
|
|
414
|
+
raw_xml: str | None = None
|
|
415
|
+
|
|
416
|
+
# Format 1: explicit "nexus settings" prefix
|
|
417
|
+
if lower.startswith("nexus settings"):
|
|
418
|
+
xml_part = text[len("nexus settings"):].strip()
|
|
419
|
+
# Strip code fences if present
|
|
420
|
+
xml_part = _re.sub(r"^```[a-z]*\n?", "", xml_part).rstrip("`").strip()
|
|
421
|
+
if "<servers>" in xml_part or "<?xml" in xml_part:
|
|
422
|
+
raw_xml = xml_part
|
|
423
|
+
else:
|
|
424
|
+
await client.chat_postMessage(
|
|
425
|
+
channel=channel,
|
|
426
|
+
text=":x: Couldn't find `<servers>` block in what you sent. Paste the full `settings.xml` content after `nexus settings`.",
|
|
427
|
+
)
|
|
428
|
+
return True
|
|
429
|
+
|
|
430
|
+
# Format 2: raw XML paste (contains <?xml and <servers>)
|
|
431
|
+
elif "<?xml" in text and "<servers>" in text:
|
|
432
|
+
raw_xml = _re.sub(r"^```[a-z]*\n?", "", text).rstrip("`").strip()
|
|
433
|
+
|
|
434
|
+
# Format 3: "nexus creds <server-id> <username> <password>"
|
|
435
|
+
elif lower.startswith("nexus creds"):
|
|
436
|
+
parts = text.split(None, 4) # ["nexus", "creds", id, user, pw]
|
|
437
|
+
if len(parts) < 5:
|
|
438
|
+
await client.chat_postMessage(
|
|
439
|
+
channel=channel,
|
|
440
|
+
text=":x: Usage: `nexus creds <server-id> <username> <password>`\nExample: `nexus creds snapshots myuser mypass`",
|
|
441
|
+
)
|
|
442
|
+
return True
|
|
443
|
+
server_id, username, password = parts[2], parts[3], parts[4]
|
|
444
|
+
raw_xml = f"""<?xml version="1.0" encoding="UTF-8"?>
|
|
445
|
+
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
|
446
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
447
|
+
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
|
448
|
+
<servers>
|
|
449
|
+
<server>
|
|
450
|
+
<id>{server_id}</id>
|
|
451
|
+
<username>{username}</username>
|
|
452
|
+
<password>{password}</password>
|
|
453
|
+
</server>
|
|
454
|
+
</servers>
|
|
455
|
+
</settings>"""
|
|
456
|
+
else:
|
|
457
|
+
return False # not a nexus command — let Boss handle it
|
|
458
|
+
|
|
459
|
+
# Admin only for security
|
|
460
|
+
if not is_admin:
|
|
461
|
+
await client.chat_postMessage(
|
|
462
|
+
channel=channel,
|
|
463
|
+
text=":lock: Only admins can update Nexus credentials.",
|
|
464
|
+
)
|
|
465
|
+
return True
|
|
466
|
+
|
|
467
|
+
queued = _drop_nexus_patch_task(cfg_loader, raw_xml, user_id, channel)
|
|
468
|
+
if queued:
|
|
469
|
+
await client.chat_postMessage(
|
|
470
|
+
channel=channel,
|
|
471
|
+
text=":white_check_mark: Got it — queued a Patch task to install the credentials into `~/.m2/settings.xml` on the server. I'll @mention you when it's done.",
|
|
472
|
+
)
|
|
473
|
+
else:
|
|
474
|
+
await client.chat_postMessage(
|
|
475
|
+
channel=channel,
|
|
476
|
+
text=":warning: Patch (dev agent) is not configured on this instance — cannot auto-install. Please write the file manually to `~/.m2/settings.xml` on the Sentinel server.",
|
|
477
|
+
)
|
|
478
|
+
return True
|
|
479
|
+
|
|
480
|
+
|
|
350
481
|
# ── Dispatcher ────────────────────────────────────────────────────────────────
|
|
351
482
|
|
|
352
483
|
async def _dispatch(event: dict, client, cfg_loader, store) -> None:
|
|
@@ -393,6 +524,13 @@ async def _dispatch(event: dict, client, cfg_loader, store) -> None:
|
|
|
393
524
|
pass # silently drop — no orphaned message
|
|
394
525
|
return
|
|
395
526
|
|
|
527
|
+
# ── Nexus credentials shortcut (intercept before Boss LLM turn) ─────────────
|
|
528
|
+
# Handles: "nexus settings <XML>", "nexus creds <host> <user> <pass>",
|
|
529
|
+
# or a raw paste that contains <?xml and <servers> (settings.xml without prefix).
|
|
530
|
+
_nexus_handled = await _handle_nexus_input(text, user_id, channel, client, cfg_loader, is_admin)
|
|
531
|
+
if _nexus_handled:
|
|
532
|
+
return
|
|
533
|
+
|
|
396
534
|
# Fetch any attached files (screenshots, logs, docs)
|
|
397
535
|
attachments: list[dict] = []
|
|
398
536
|
if event.get("files"):
|