@misterhuydo/sentinel 1.4.7 → 1.4.8
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/session.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"message": "Auto-checkpoint at 2026-03-24T15:
|
|
3
|
-
"checkpoint_at": "2026-03-24T15:
|
|
2
|
+
"message": "Auto-checkpoint at 2026-03-24T15:14:13.070Z",
|
|
3
|
+
"checkpoint_at": "2026-03-24T15:14:13.071Z",
|
|
4
4
|
"active_files": [],
|
|
5
5
|
"notes": [],
|
|
6
6
|
"mtime_snapshot": {}
|
package/package.json
CHANGED
|
@@ -138,12 +138,14 @@ class ConfigLoader:
|
|
|
138
138
|
d.update(_parse_properties(str(workspace_props)))
|
|
139
139
|
logger.debug("Loaded workspace config from %s", workspace_props)
|
|
140
140
|
|
|
141
|
+
project_d: dict[str, str] = {}
|
|
141
142
|
path = self.config_dir / "sentinel.properties"
|
|
142
143
|
if not path.exists():
|
|
143
144
|
if not d:
|
|
144
145
|
logger.warning("sentinel.properties not found at %s", path)
|
|
145
146
|
else:
|
|
146
|
-
|
|
147
|
+
project_d = _parse_properties(str(path))
|
|
148
|
+
d.update(project_d)
|
|
147
149
|
|
|
148
150
|
c = SentinelConfig()
|
|
149
151
|
c.poll_interval_seconds = int(d.get("POLL_INTERVAL_SECONDS", 120))
|
|
@@ -173,7 +175,15 @@ class ConfigLoader:
|
|
|
173
175
|
c.slack_allowed_users = _csv(d.get("SLACK_ALLOWED_USERS", ""))
|
|
174
176
|
c.slack_admin_users = _csv(d.get("SLACK_ADMIN_USERS", ""))
|
|
175
177
|
c.project_name = d.get("PROJECT_NAME", "") or Path(self.config_dir).resolve().parent.name
|
|
176
|
-
|
|
178
|
+
# If CLAUDE_PRO_FOR_TASKS is explicitly set anywhere, respect it.
|
|
179
|
+
# Otherwise: if the project supplies its own ANTHROPIC_API_KEY, default to False
|
|
180
|
+
# (bill against their key, not the Claude Pro subscription).
|
|
181
|
+
if "CLAUDE_PRO_FOR_TASKS" in d:
|
|
182
|
+
c.claude_pro_for_tasks = d["CLAUDE_PRO_FOR_TASKS"].lower() != "false"
|
|
183
|
+
elif project_d.get("ANTHROPIC_API_KEY", "").strip():
|
|
184
|
+
c.claude_pro_for_tasks = False
|
|
185
|
+
else:
|
|
186
|
+
c.claude_pro_for_tasks = True
|
|
177
187
|
c.sync_enabled = d.get("SYNC_ENABLED", "true").lower() != "false"
|
|
178
188
|
c.sync_interval_seconds = int(d.get("SYNC_INTERVAL_SECONDS", 300))
|
|
179
189
|
c.sync_retention_days = int(d.get("SYNC_RETENTION_DAYS", 30))
|
|
@@ -26,10 +26,11 @@ MAILS=you@yourdomain.com
|
|
|
26
26
|
STATE_DB=./sentinel.db
|
|
27
27
|
WORKSPACE_DIR=./workspace
|
|
28
28
|
|
|
29
|
-
#
|
|
30
|
-
#
|
|
29
|
+
# Anthropic API key — override workspace default to bill this project separately.
|
|
30
|
+
# Use case: the project owner (e.g. a client) provides their own key so fix costs
|
|
31
|
+
# are charged to their account. When set here, the Fix Engine automatically uses
|
|
32
|
+
# this key instead of the shared Claude Pro subscription.
|
|
31
33
|
# ANTHROPIC_API_KEY=sk-ant-...
|
|
32
|
-
# CLAUDE_PRO_FOR_TASKS=true
|
|
33
34
|
|
|
34
35
|
# Slack Bot (optional) — Sentinel Boss conversational interface
|
|
35
36
|
# Create a Slack App at api.slack.com, enable Socket Mode, add scopes:
|