nemoris 0.1.0 → 0.1.2
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/.env.example +49 -49
- package/LICENSE +21 -21
- package/README.md +209 -209
- package/SECURITY.md +59 -119
- package/bin/nemoris +46 -46
- package/config/agents/agent.toml.example +28 -28
- package/config/agents/content.toml +23 -0
- package/config/agents/default.toml +22 -22
- package/config/agents/heartbeat.toml +35 -0
- package/config/agents/iris.toml +23 -0
- package/config/agents/lab.toml +23 -0
- package/config/agents/main.toml +45 -0
- package/config/agents/nemo.toml +21 -0
- package/config/agents/ops.toml +38 -0
- package/config/agents/orchestrator.toml +18 -18
- package/config/agents/revenue.toml +23 -0
- package/config/agents/testyboo.toml +19 -0
- package/config/delivery.toml +73 -73
- package/config/embeddings.toml +5 -5
- package/config/identity/content-purpose.md +11 -0
- package/config/identity/content-soul.md +45 -0
- package/config/identity/default-purpose.md +1 -1
- package/config/identity/default-soul.md +3 -3
- package/config/identity/heartbeat-purpose.md +9 -0
- package/config/identity/heartbeat-soul.md +16 -0
- package/config/identity/iris-purpose.md +17 -0
- package/config/identity/iris-soul.md +68 -0
- package/config/identity/lab-purpose.md +10 -0
- package/config/identity/lab-soul.md +38 -0
- package/config/identity/main-purpose.md +17 -0
- package/config/identity/main-soul.md +66 -0
- package/config/identity/main-user.md +22 -0
- package/config/identity/ops-purpose.md +9 -0
- package/config/identity/ops-soul.md +16 -0
- package/config/identity/orchestrator-purpose.md +1 -1
- package/config/identity/orchestrator-soul.md +1 -1
- package/config/identity/revenue-purpose.md +9 -0
- package/config/identity/revenue-soul.md +41 -0
- package/config/identity/testyboo-purpose.md +13 -0
- package/config/identity/testyboo-soul.md +20 -0
- package/config/improvement-targets.toml +15 -15
- package/config/jobs/heartbeat-check.toml +30 -30
- package/config/jobs/memory-rollup.toml +46 -46
- package/config/jobs/workspace-health.toml +63 -63
- package/config/mcp.toml +16 -16
- package/config/output-contracts.toml +17 -17
- package/config/peers.toml +32 -32
- package/config/peers.toml.example +32 -32
- package/config/policies/memory-default.toml +10 -10
- package/config/policies/memory-heartbeat.toml +5 -5
- package/config/policies/memory-ops.toml +10 -10
- package/config/policies/tools-heartbeat-minimal.toml +8 -8
- package/config/policies/tools-interactive-safe.toml +8 -8
- package/config/policies/tools-ops-bounded.toml +8 -8
- package/config/policies/tools-orchestrator.toml +7 -7
- package/config/providers/anthropic.toml +15 -15
- package/config/providers/ollama.toml +5 -5
- package/config/providers/openai-codex.toml +9 -9
- package/config/providers/openrouter.toml +5 -5
- package/config/router.toml +22 -22
- package/config/runtime.toml +114 -114
- package/config/skills/self-improvement.toml +15 -15
- package/config/skills/telegram-onboarding-spec.md +240 -240
- package/config/skills/workspace-monitor.toml +15 -15
- package/config/task-router.toml +42 -42
- package/install.sh +50 -50
- package/package.json +91 -90
- package/src/auth/auth-profiles.js +169 -169
- package/src/auth/openai-codex-oauth.js +285 -285
- package/src/battle.js +449 -449
- package/src/cli/help.js +265 -265
- package/src/cli/output-filter.js +49 -49
- package/src/cli/runtime-control.js +704 -704
- package/src/cli-main.js +2763 -2763
- package/src/cli.js +78 -78
- package/src/config/loader.js +332 -332
- package/src/config/schema-validator.js +214 -214
- package/src/config/toml-lite.js +8 -8
- package/src/daemon/action-handlers.js +71 -71
- package/src/daemon/healing-tick.js +87 -87
- package/src/daemon/health-probes.js +90 -90
- package/src/daemon/notifier.js +57 -57
- package/src/daemon/nurse.js +218 -218
- package/src/daemon/repair-log.js +106 -106
- package/src/daemon/rule-staging.js +90 -90
- package/src/daemon/rules.js +29 -29
- package/src/daemon/telegram-commands.js +54 -54
- package/src/daemon/updater.js +85 -85
- package/src/jobs/job-runner.js +78 -78
- package/src/mcp/consumer.js +129 -129
- package/src/memory/active-recall.js +171 -171
- package/src/memory/backend-manager.js +97 -97
- package/src/memory/backends/file-backend.js +38 -38
- package/src/memory/backends/qmd-backend.js +219 -219
- package/src/memory/embedding-guards.js +24 -24
- package/src/memory/embedding-index.js +118 -118
- package/src/memory/embedding-service.js +179 -179
- package/src/memory/file-index.js +177 -177
- package/src/memory/memory-signature.js +5 -5
- package/src/memory/memory-store.js +648 -648
- package/src/memory/retrieval-planner.js +66 -66
- package/src/memory/scoring.js +145 -145
- package/src/memory/simhash.js +78 -78
- package/src/memory/sqlite-active-store.js +824 -824
- package/src/memory/write-policy.js +36 -36
- package/src/onboarding/aliases.js +33 -33
- package/src/onboarding/auth/api-key.js +224 -224
- package/src/onboarding/auth/ollama-detect.js +42 -42
- package/src/onboarding/clack-prompter.js +77 -77
- package/src/onboarding/doctor.js +530 -530
- package/src/onboarding/lock.js +42 -42
- package/src/onboarding/model-catalog.js +344 -344
- package/src/onboarding/phases/auth.js +576 -589
- package/src/onboarding/phases/build.js +130 -130
- package/src/onboarding/phases/choose.js +82 -82
- package/src/onboarding/phases/detect.js +98 -98
- package/src/onboarding/phases/hatch.js +216 -216
- package/src/onboarding/phases/identity.js +79 -79
- package/src/onboarding/phases/ollama.js +345 -345
- package/src/onboarding/phases/scaffold.js +99 -99
- package/src/onboarding/phases/telegram.js +377 -377
- package/src/onboarding/phases/validate.js +204 -204
- package/src/onboarding/phases/verify.js +206 -206
- package/src/onboarding/platform.js +482 -482
- package/src/onboarding/status-bar.js +95 -95
- package/src/onboarding/templates.js +794 -794
- package/src/onboarding/toml-writer.js +38 -38
- package/src/onboarding/tui.js +250 -250
- package/src/onboarding/uninstall.js +153 -153
- package/src/onboarding/wizard.js +516 -499
- package/src/providers/anthropic.js +168 -168
- package/src/providers/base.js +247 -247
- package/src/providers/circuit-breaker.js +136 -136
- package/src/providers/ollama.js +163 -163
- package/src/providers/openai-codex.js +149 -149
- package/src/providers/openrouter.js +136 -136
- package/src/providers/registry.js +36 -36
- package/src/providers/router.js +16 -16
- package/src/runtime/bootstrap-cache.js +47 -47
- package/src/runtime/capabilities-prompt.js +25 -25
- package/src/runtime/completion-ping.js +99 -99
- package/src/runtime/config-validator.js +121 -121
- package/src/runtime/context-ledger.js +360 -360
- package/src/runtime/cutover-readiness.js +42 -42
- package/src/runtime/daemon.js +729 -729
- package/src/runtime/delivery-ack.js +195 -195
- package/src/runtime/delivery-adapters/local-file.js +41 -41
- package/src/runtime/delivery-adapters/openclaw-cli.js +94 -94
- package/src/runtime/delivery-adapters/openclaw-peer.js +98 -98
- package/src/runtime/delivery-adapters/shadow.js +13 -13
- package/src/runtime/delivery-adapters/standalone-http.js +98 -98
- package/src/runtime/delivery-adapters/telegram.js +104 -104
- package/src/runtime/delivery-adapters/tui.js +128 -128
- package/src/runtime/delivery-manager.js +807 -807
- package/src/runtime/delivery-store.js +168 -168
- package/src/runtime/dependency-health.js +118 -118
- package/src/runtime/envelope.js +114 -114
- package/src/runtime/evaluation.js +1089 -1089
- package/src/runtime/exec-approvals.js +216 -216
- package/src/runtime/executor.js +500 -500
- package/src/runtime/failure-ping.js +67 -67
- package/src/runtime/flows.js +83 -83
- package/src/runtime/guards.js +45 -45
- package/src/runtime/handoff.js +51 -51
- package/src/runtime/identity-cache.js +28 -28
- package/src/runtime/improvement-engine.js +109 -109
- package/src/runtime/improvement-harness.js +581 -581
- package/src/runtime/input-sanitiser.js +72 -72
- package/src/runtime/interaction-contract.js +347 -347
- package/src/runtime/lane-readiness.js +226 -226
- package/src/runtime/migration.js +323 -323
- package/src/runtime/model-resolution.js +78 -78
- package/src/runtime/network.js +64 -64
- package/src/runtime/notification-store.js +97 -97
- package/src/runtime/notifier.js +256 -256
- package/src/runtime/orchestrator.js +53 -53
- package/src/runtime/orphan-reaper.js +41 -41
- package/src/runtime/output-contract-schema.js +139 -139
- package/src/runtime/output-contract-validator.js +439 -439
- package/src/runtime/peer-readiness.js +69 -69
- package/src/runtime/peer-registry.js +133 -133
- package/src/runtime/pilot-status.js +108 -108
- package/src/runtime/prompt-builder.js +261 -261
- package/src/runtime/provider-attempt.js +582 -582
- package/src/runtime/report-fallback.js +71 -71
- package/src/runtime/result-normalizer.js +183 -183
- package/src/runtime/retention.js +74 -74
- package/src/runtime/review.js +244 -244
- package/src/runtime/route-job.js +15 -15
- package/src/runtime/run-store.js +38 -38
- package/src/runtime/schedule.js +88 -88
- package/src/runtime/scheduler-state.js +434 -434
- package/src/runtime/scheduler.js +656 -656
- package/src/runtime/session-compactor.js +182 -182
- package/src/runtime/session-search.js +155 -155
- package/src/runtime/slack-inbound.js +249 -249
- package/src/runtime/ssrf.js +102 -102
- package/src/runtime/status-aggregator.js +330 -330
- package/src/runtime/task-contract.js +140 -140
- package/src/runtime/task-packet.js +107 -107
- package/src/runtime/task-router.js +140 -140
- package/src/runtime/telegram-inbound.js +1565 -1565
- package/src/runtime/token-counter.js +134 -134
- package/src/runtime/token-estimator.js +59 -59
- package/src/runtime/tool-loop.js +200 -200
- package/src/runtime/transport-server.js +311 -311
- package/src/runtime/tui-server.js +411 -411
- package/src/runtime/ulid.js +44 -44
- package/src/security/ssrf-check.js +197 -197
- package/src/setup.js +369 -369
- package/src/shadow/bridge.js +303 -303
- package/src/skills/loader.js +84 -84
- package/src/tools/catalog.json +49 -49
- package/src/tools/cli-delegate.js +44 -44
- package/src/tools/mcp-client.js +106 -106
- package/src/tools/micro/cancel-task.js +6 -6
- package/src/tools/micro/complete-task.js +6 -6
- package/src/tools/micro/fail-task.js +6 -6
- package/src/tools/micro/http-fetch.js +74 -74
- package/src/tools/micro/index.js +36 -36
- package/src/tools/micro/lcm-recall.js +60 -60
- package/src/tools/micro/list-dir.js +17 -17
- package/src/tools/micro/list-skills.js +46 -46
- package/src/tools/micro/load-skill.js +38 -38
- package/src/tools/micro/memory-search.js +45 -45
- package/src/tools/micro/read-file.js +11 -11
- package/src/tools/micro/session-search.js +54 -54
- package/src/tools/micro/shell-exec.js +43 -43
- package/src/tools/micro/trigger-job.js +79 -79
- package/src/tools/micro/web-search.js +58 -58
- package/src/tools/micro/workspace-paths.js +39 -39
- package/src/tools/micro/write-file.js +14 -14
- package/src/tools/micro/write-memory.js +41 -41
- package/src/tools/registry.js +348 -348
- package/src/tools/tool-result-contract.js +36 -36
- package/src/tui/chat.js +835 -835
- package/src/tui/renderer.js +175 -175
- package/src/tui/socket-client.js +217 -217
- package/src/utils/canonical-json.js +29 -29
- package/src/utils/compaction.js +30 -30
- package/src/utils/env-loader.js +5 -5
- package/src/utils/errors.js +80 -80
- package/src/utils/fs.js +101 -101
- package/src/utils/ids.js +5 -5
- package/src/utils/model-context-limits.js +30 -30
- package/src/utils/token-budget.js +74 -74
- package/src/utils/usage-cost.js +25 -25
- package/src/utils/usage-metrics.js +14 -14
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
[targets.workspace_health]
|
|
2
|
-
job_id = "workspace-health"
|
|
3
|
-
default_mode = "provider"
|
|
4
|
-
default_model_override = "ollama/qwen3:8b"
|
|
5
|
-
default_timeout_ms = 60000
|
|
6
|
-
allowed_knobs = ["report_guidance", "retrieval_blend", "model_override"]
|
|
7
|
-
recommended_variants = ["baseline", "focus_concrete", "retrieval_lexical_heavy", "retrieval_embedding_heavy", "report_model_bump"]
|
|
8
|
-
|
|
9
|
-
[targets.memory_rollup]
|
|
10
|
-
job_id = "memory-rollup"
|
|
11
|
-
default_mode = "provider"
|
|
12
|
-
default_model_override = "ollama/qwen3:8b"
|
|
13
|
-
default_timeout_ms = 75000
|
|
14
|
-
allowed_knobs = ["report_guidance", "retrieval_blend", "model_override"]
|
|
15
|
-
recommended_variants = ["baseline", "focus_concrete", "retrieval_lexical_heavy", "retrieval_embedding_heavy", "report_model_bump"]
|
|
1
|
+
[targets.workspace_health]
|
|
2
|
+
job_id = "workspace-health"
|
|
3
|
+
default_mode = "provider"
|
|
4
|
+
default_model_override = "ollama/qwen3:8b"
|
|
5
|
+
default_timeout_ms = 60000
|
|
6
|
+
allowed_knobs = ["report_guidance", "retrieval_blend", "model_override"]
|
|
7
|
+
recommended_variants = ["baseline", "focus_concrete", "retrieval_lexical_heavy", "retrieval_embedding_heavy", "report_model_bump"]
|
|
8
|
+
|
|
9
|
+
[targets.memory_rollup]
|
|
10
|
+
job_id = "memory-rollup"
|
|
11
|
+
default_mode = "provider"
|
|
12
|
+
default_model_override = "ollama/qwen3:8b"
|
|
13
|
+
default_timeout_ms = 75000
|
|
14
|
+
allowed_knobs = ["report_guidance", "retrieval_blend", "model_override"]
|
|
15
|
+
recommended_variants = ["baseline", "focus_concrete", "retrieval_lexical_heavy", "retrieval_embedding_heavy", "report_model_bump"]
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
id = "heartbeat-check"
|
|
2
|
-
trigger = "every:30m"
|
|
3
|
-
task_type = "heartbeat"
|
|
4
|
-
agent_id = "assistant"
|
|
5
|
-
model_lane = "local_cheap"
|
|
6
|
-
output_target = "inbox"
|
|
7
|
-
idempotency_key = "heartbeat-check"
|
|
8
|
-
|
|
9
|
-
[budget]
|
|
10
|
-
max_tokens = 3000
|
|
11
|
-
max_runtime_seconds = 20
|
|
12
|
-
|
|
13
|
-
[retry]
|
|
14
|
-
max_attempts = 1
|
|
15
|
-
|
|
16
|
-
[stop]
|
|
17
|
-
halt_on_policy_error = true
|
|
18
|
-
halt_on_budget_exceeded = true
|
|
19
|
-
|
|
20
|
-
[interaction_contract]
|
|
21
|
-
ack_mode = "silent"
|
|
22
|
-
progress_mode = "none"
|
|
23
|
-
notify_on_done = false
|
|
24
|
-
notify_on_error = true
|
|
25
|
-
requires_pingback = false
|
|
26
|
-
pingback_target = "scheduler_log"
|
|
27
|
-
completion_signal = "heartbeat_ok"
|
|
28
|
-
failure_signal = "heartbeat_error"
|
|
29
|
-
handoff_format = "concise_status"
|
|
30
|
-
completion_sections = ["status"]
|
|
1
|
+
id = "heartbeat-check"
|
|
2
|
+
trigger = "every:30m"
|
|
3
|
+
task_type = "heartbeat"
|
|
4
|
+
agent_id = "assistant"
|
|
5
|
+
model_lane = "local_cheap"
|
|
6
|
+
output_target = "inbox"
|
|
7
|
+
idempotency_key = "heartbeat-check"
|
|
8
|
+
|
|
9
|
+
[budget]
|
|
10
|
+
max_tokens = 3000
|
|
11
|
+
max_runtime_seconds = 20
|
|
12
|
+
|
|
13
|
+
[retry]
|
|
14
|
+
max_attempts = 1
|
|
15
|
+
|
|
16
|
+
[stop]
|
|
17
|
+
halt_on_policy_error = true
|
|
18
|
+
halt_on_budget_exceeded = true
|
|
19
|
+
|
|
20
|
+
[interaction_contract]
|
|
21
|
+
ack_mode = "silent"
|
|
22
|
+
progress_mode = "none"
|
|
23
|
+
notify_on_done = false
|
|
24
|
+
notify_on_error = true
|
|
25
|
+
requires_pingback = false
|
|
26
|
+
pingback_target = "scheduler_log"
|
|
27
|
+
completion_signal = "heartbeat_ok"
|
|
28
|
+
failure_signal = "heartbeat_error"
|
|
29
|
+
handoff_format = "concise_status"
|
|
30
|
+
completion_sections = ["status"]
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
id = "memory-rollup"
|
|
2
|
-
trigger = "daily:22:15"
|
|
3
|
-
task_type = "memory_rollup"
|
|
4
|
-
agent_id = "assistant"
|
|
5
|
-
model_lane = "local_report"
|
|
6
|
-
output_target = "state/memory-rollups"
|
|
7
|
-
idempotency_key = "memory-rollup:date"
|
|
8
|
-
live_job_hints = ["midnight-project-sync"]
|
|
9
|
-
memory_backends = ["file", "qmd"]
|
|
10
|
-
qmd_supplement_limit = 4
|
|
11
|
-
memory_limit = 10
|
|
12
|
-
|
|
13
|
-
[budget]
|
|
14
|
-
max_tokens = 6000
|
|
15
|
-
max_runtime_seconds = 45
|
|
16
|
-
|
|
17
|
-
[retry]
|
|
18
|
-
max_attempts = 2
|
|
19
|
-
|
|
20
|
-
[stop]
|
|
21
|
-
halt_on_policy_error = true
|
|
22
|
-
halt_on_budget_exceeded = true
|
|
23
|
-
|
|
24
|
-
[output_contract]
|
|
25
|
-
format = "structured_rollup"
|
|
26
|
-
required_sections = ["inbox", "projects", "backlog", "update"]
|
|
27
|
-
style_hints = ["use markdown headings", "include concise bullets under each section", "keep the output handoff-ready"]
|
|
28
|
-
|
|
29
|
-
[interaction_contract]
|
|
30
|
-
ack_mode = "immediate"
|
|
31
|
-
progress_mode = "long_running"
|
|
32
|
-
progress_after_seconds = 75
|
|
33
|
-
max_silence_seconds = 150
|
|
34
|
-
notify_on_done = true
|
|
35
|
-
notify_on_error = true
|
|
36
|
-
requires_pingback = true
|
|
37
|
-
pingback_target = "same_thread"
|
|
38
|
-
completion_signal = "rollup_ready"
|
|
39
|
-
failure_signal = "rollup_error"
|
|
40
|
-
handoff_format = "structured_handoff"
|
|
41
|
-
completion_sections = ["inbox", "projects", "backlog", "update", "next_actions"]
|
|
42
|
-
|
|
43
|
-
[report_guidance]
|
|
44
|
-
focus = ["write a handoff-ready rollup, not a generic summary", "prefer concrete state changes over empty reassurance", "if shadow import is the only evidence, say that plainly"]
|
|
45
|
-
quality_checks = ["each section should earn its bullet", "keep update section action-oriented", "do not repeat the same sentence across sections"]
|
|
46
|
-
avoid = ["restating the prompt", "empty filler across all sections", "code fences or markdown wrappers around JSON"]
|
|
1
|
+
id = "memory-rollup"
|
|
2
|
+
trigger = "daily:22:15"
|
|
3
|
+
task_type = "memory_rollup"
|
|
4
|
+
agent_id = "assistant"
|
|
5
|
+
model_lane = "local_report"
|
|
6
|
+
output_target = "state/memory-rollups"
|
|
7
|
+
idempotency_key = "memory-rollup:date"
|
|
8
|
+
live_job_hints = ["midnight-project-sync"]
|
|
9
|
+
memory_backends = ["file", "qmd"]
|
|
10
|
+
qmd_supplement_limit = 4
|
|
11
|
+
memory_limit = 10
|
|
12
|
+
|
|
13
|
+
[budget]
|
|
14
|
+
max_tokens = 6000
|
|
15
|
+
max_runtime_seconds = 45
|
|
16
|
+
|
|
17
|
+
[retry]
|
|
18
|
+
max_attempts = 2
|
|
19
|
+
|
|
20
|
+
[stop]
|
|
21
|
+
halt_on_policy_error = true
|
|
22
|
+
halt_on_budget_exceeded = true
|
|
23
|
+
|
|
24
|
+
[output_contract]
|
|
25
|
+
format = "structured_rollup"
|
|
26
|
+
required_sections = ["inbox", "projects", "backlog", "update"]
|
|
27
|
+
style_hints = ["use markdown headings", "include concise bullets under each section", "keep the output handoff-ready"]
|
|
28
|
+
|
|
29
|
+
[interaction_contract]
|
|
30
|
+
ack_mode = "immediate"
|
|
31
|
+
progress_mode = "long_running"
|
|
32
|
+
progress_after_seconds = 75
|
|
33
|
+
max_silence_seconds = 150
|
|
34
|
+
notify_on_done = true
|
|
35
|
+
notify_on_error = true
|
|
36
|
+
requires_pingback = true
|
|
37
|
+
pingback_target = "same_thread"
|
|
38
|
+
completion_signal = "rollup_ready"
|
|
39
|
+
failure_signal = "rollup_error"
|
|
40
|
+
handoff_format = "structured_handoff"
|
|
41
|
+
completion_sections = ["inbox", "projects", "backlog", "update", "next_actions"]
|
|
42
|
+
|
|
43
|
+
[report_guidance]
|
|
44
|
+
focus = ["write a handoff-ready rollup, not a generic summary", "prefer concrete state changes over empty reassurance", "if shadow import is the only evidence, say that plainly"]
|
|
45
|
+
quality_checks = ["each section should earn its bullet", "keep update section action-oriented", "do not repeat the same sentence across sections"]
|
|
46
|
+
avoid = ["restating the prompt", "empty filler across all sections", "code fences or markdown wrappers around JSON"]
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
id = "workspace-health"
|
|
2
|
-
trigger = "hourly"
|
|
3
|
-
task_type = "workspace_health"
|
|
4
|
-
agent_id = "assistant"
|
|
5
|
-
model_lane = "local_report"
|
|
6
|
-
output_target = "state/health"
|
|
7
|
-
idempotency_key = "workspace-health:hour"
|
|
8
|
-
live_job_hints = ["morning-briefing"]
|
|
9
|
-
memory_backends = ["file"]
|
|
10
|
-
memory_limit = 6
|
|
11
|
-
|
|
12
|
-
[budget]
|
|
13
|
-
max_tokens = 4000
|
|
14
|
-
max_runtime_seconds = 120
|
|
15
|
-
|
|
16
|
-
[retry]
|
|
17
|
-
max_attempts = 1
|
|
18
|
-
|
|
19
|
-
[stop]
|
|
20
|
-
halt_on_policy_error = true
|
|
21
|
-
halt_on_budget_exceeded = true
|
|
22
|
-
|
|
23
|
-
[output_contract]
|
|
24
|
-
format = "bulleted_briefing"
|
|
25
|
-
required_sections = ["calendar", "issues", "weather"]
|
|
26
|
-
style_hints = ["lead with a one-line status summary", "use short bullets", "call out blockers or deltas only"]
|
|
27
|
-
|
|
28
|
-
[interaction_contract]
|
|
29
|
-
ack_mode = "immediate"
|
|
30
|
-
progress_mode = "long_running"
|
|
31
|
-
progress_after_seconds = 60
|
|
32
|
-
max_silence_seconds = 120
|
|
33
|
-
notify_on_done = true
|
|
34
|
-
notify_on_error = true
|
|
35
|
-
requires_pingback = true
|
|
36
|
-
pingback_target = "same_thread"
|
|
37
|
-
completion_signal = "health_ready"
|
|
38
|
-
failure_signal = "health_error"
|
|
39
|
-
handoff_format = "concise_status"
|
|
40
|
-
completion_sections = ["status", "issues", "next_actions"]
|
|
41
|
-
|
|
42
|
-
[interaction_contract.handoff]
|
|
43
|
-
enabled = true
|
|
44
|
-
signal = "workspace_handoff"
|
|
45
|
-
capability_query = "reporting workspace health coordination"
|
|
46
|
-
preferred_task_classes = ["workspace_health", "reporting", "handoff"]
|
|
47
|
-
max_suggestions = 2
|
|
48
|
-
|
|
49
|
-
[interaction_contract.yield]
|
|
50
|
-
enabled = true
|
|
51
|
-
signal = "workspace_follow_up"
|
|
52
|
-
target_surface = "operator_review"
|
|
53
|
-
follow_up_objective = "Review the workspace-health outcome, choose any required peer handoff, and send the bounded follow-up notifications."
|
|
54
|
-
|
|
55
|
-
[report_guidance]
|
|
56
|
-
focus = ["prefer concrete deltas over generic reassurance", "treat missing evidence as None", "highlight blockers, anomalies, or quiet status plainly"]
|
|
57
|
-
quality_checks = ["keep status to one line", "do not invent meetings, issues, or weather details", "mention only what the packet supports"]
|
|
58
|
-
avoid = ["generic system healthy filler", "repeating the job objective", "code fences or markdown wrappers around JSON"]
|
|
59
|
-
|
|
60
|
-
[report_fallback]
|
|
61
|
-
enabled = true
|
|
62
|
-
lane = "report_fallback_lowcost"
|
|
63
|
-
allowed_failure_classes = ["timeout", "provider_loading"]
|
|
1
|
+
id = "workspace-health"
|
|
2
|
+
trigger = "hourly"
|
|
3
|
+
task_type = "workspace_health"
|
|
4
|
+
agent_id = "assistant"
|
|
5
|
+
model_lane = "local_report"
|
|
6
|
+
output_target = "state/health"
|
|
7
|
+
idempotency_key = "workspace-health:hour"
|
|
8
|
+
live_job_hints = ["morning-briefing"]
|
|
9
|
+
memory_backends = ["file"]
|
|
10
|
+
memory_limit = 6
|
|
11
|
+
|
|
12
|
+
[budget]
|
|
13
|
+
max_tokens = 4000
|
|
14
|
+
max_runtime_seconds = 120
|
|
15
|
+
|
|
16
|
+
[retry]
|
|
17
|
+
max_attempts = 1
|
|
18
|
+
|
|
19
|
+
[stop]
|
|
20
|
+
halt_on_policy_error = true
|
|
21
|
+
halt_on_budget_exceeded = true
|
|
22
|
+
|
|
23
|
+
[output_contract]
|
|
24
|
+
format = "bulleted_briefing"
|
|
25
|
+
required_sections = ["calendar", "issues", "weather"]
|
|
26
|
+
style_hints = ["lead with a one-line status summary", "use short bullets", "call out blockers or deltas only"]
|
|
27
|
+
|
|
28
|
+
[interaction_contract]
|
|
29
|
+
ack_mode = "immediate"
|
|
30
|
+
progress_mode = "long_running"
|
|
31
|
+
progress_after_seconds = 60
|
|
32
|
+
max_silence_seconds = 120
|
|
33
|
+
notify_on_done = true
|
|
34
|
+
notify_on_error = true
|
|
35
|
+
requires_pingback = true
|
|
36
|
+
pingback_target = "same_thread"
|
|
37
|
+
completion_signal = "health_ready"
|
|
38
|
+
failure_signal = "health_error"
|
|
39
|
+
handoff_format = "concise_status"
|
|
40
|
+
completion_sections = ["status", "issues", "next_actions"]
|
|
41
|
+
|
|
42
|
+
[interaction_contract.handoff]
|
|
43
|
+
enabled = true
|
|
44
|
+
signal = "workspace_handoff"
|
|
45
|
+
capability_query = "reporting workspace health coordination"
|
|
46
|
+
preferred_task_classes = ["workspace_health", "reporting", "handoff"]
|
|
47
|
+
max_suggestions = 2
|
|
48
|
+
|
|
49
|
+
[interaction_contract.yield]
|
|
50
|
+
enabled = true
|
|
51
|
+
signal = "workspace_follow_up"
|
|
52
|
+
target_surface = "operator_review"
|
|
53
|
+
follow_up_objective = "Review the workspace-health outcome, choose any required peer handoff, and send the bounded follow-up notifications."
|
|
54
|
+
|
|
55
|
+
[report_guidance]
|
|
56
|
+
focus = ["prefer concrete deltas over generic reassurance", "treat missing evidence as None", "highlight blockers, anomalies, or quiet status plainly"]
|
|
57
|
+
quality_checks = ["keep status to one line", "do not invent meetings, issues, or weather details", "mention only what the packet supports"]
|
|
58
|
+
avoid = ["generic system healthy filler", "repeating the job objective", "code fences or markdown wrappers around JSON"]
|
|
59
|
+
|
|
60
|
+
[report_fallback]
|
|
61
|
+
enabled = true
|
|
62
|
+
lane = "report_fallback_lowcost"
|
|
63
|
+
allowed_failure_classes = ["timeout", "provider_loading"]
|
package/config/mcp.toml
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# MCP Server Configuration
|
|
2
|
-
# Each [servers.<id>] section defines an MCP server that Nemoris can connect to.
|
|
3
|
-
# Servers are spawned lazily on first tool call (not at daemon boot).
|
|
4
|
-
#
|
|
5
|
-
# Fields:
|
|
6
|
-
# command — executable to run (required)
|
|
7
|
-
# args — CLI arguments (optional, default [])
|
|
8
|
-
# env — environment variables, supports ${VAR} substitution (optional)
|
|
9
|
-
# enabled — set to false to disable without removing (optional, default true)
|
|
10
|
-
# timeout — per-request timeout in ms (optional, default 30000)
|
|
11
|
-
#
|
|
12
|
-
# Example:
|
|
13
|
-
# [servers.github]
|
|
14
|
-
# command = "npx"
|
|
15
|
-
# args = ["-y", "@modelcontextprotocol/server-github"]
|
|
16
|
-
# env = { GITHUB_TOKEN = "${GITHUB_TOKEN}" }
|
|
1
|
+
# MCP Server Configuration
|
|
2
|
+
# Each [servers.<id>] section defines an MCP server that Nemoris can connect to.
|
|
3
|
+
# Servers are spawned lazily on first tool call (not at daemon boot).
|
|
4
|
+
#
|
|
5
|
+
# Fields:
|
|
6
|
+
# command — executable to run (required)
|
|
7
|
+
# args — CLI arguments (optional, default [])
|
|
8
|
+
# env — environment variables, supports ${VAR} substitution (optional)
|
|
9
|
+
# enabled — set to false to disable without removing (optional, default true)
|
|
10
|
+
# timeout — per-request timeout in ms (optional, default 30000)
|
|
11
|
+
#
|
|
12
|
+
# Example:
|
|
13
|
+
# [servers.github]
|
|
14
|
+
# command = "npx"
|
|
15
|
+
# args = ["-y", "@modelcontextprotocol/server-github"]
|
|
16
|
+
# env = { GITHUB_TOKEN = "${GITHUB_TOKEN}" }
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
[profiles.default]
|
|
2
|
-
require_status = true
|
|
3
|
-
section_style = "freeform"
|
|
4
|
-
require_section_items = false
|
|
5
|
-
template_lines = ["Status: <one-line status>", "<response body>"]
|
|
6
|
-
|
|
7
|
-
[profiles.bulleted_briefing]
|
|
8
|
-
require_status = true
|
|
9
|
-
section_style = "bullets"
|
|
10
|
-
require_section_items = true
|
|
11
|
-
template_lines = ["Status: <one-line status>", "- Calendar: <brief update or None>", "- Issues: <brief update or None>", "- Weather: <brief update or None>"]
|
|
12
|
-
|
|
13
|
-
[profiles.structured_rollup]
|
|
14
|
-
require_status = false
|
|
15
|
-
section_style = "headings"
|
|
16
|
-
require_section_items = true
|
|
17
|
-
template_lines = ["## Inbox", "- <brief update or None>", "", "## Projects", "- <brief update or None>", "", "## Backlog", "- <brief update or None>", "", "## Update", "- <brief update or None>"]
|
|
1
|
+
[profiles.default]
|
|
2
|
+
require_status = true
|
|
3
|
+
section_style = "freeform"
|
|
4
|
+
require_section_items = false
|
|
5
|
+
template_lines = ["Status: <one-line status>", "<response body>"]
|
|
6
|
+
|
|
7
|
+
[profiles.bulleted_briefing]
|
|
8
|
+
require_status = true
|
|
9
|
+
section_style = "bullets"
|
|
10
|
+
require_section_items = true
|
|
11
|
+
template_lines = ["Status: <one-line status>", "- Calendar: <brief update or None>", "- Issues: <brief update or None>", "- Weather: <brief update or None>"]
|
|
12
|
+
|
|
13
|
+
[profiles.structured_rollup]
|
|
14
|
+
require_status = false
|
|
15
|
+
section_style = "headings"
|
|
16
|
+
require_section_items = true
|
|
17
|
+
template_lines = ["## Inbox", "- <brief update or None>", "", "## Projects", "- <brief update or None>", "", "## Backlog", "- <brief update or None>", "", "## Update", "- <brief update or None>"]
|
package/config/peers.toml
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
# Peer agent definitions
|
|
2
|
-
# Replace session_keys and delivery details with your own values.
|
|
3
|
-
|
|
4
|
-
[peers.kodi]
|
|
5
|
-
agent_id = "main"
|
|
6
|
-
label = "Kodi"
|
|
7
|
-
delivery_profile = "gateway_telegram_main"
|
|
8
|
-
session_keys = ["agent:main:main"]
|
|
9
|
-
|
|
10
|
-
[peers.kodi.card]
|
|
11
|
-
role = "Primary operator-facing collaborator"
|
|
12
|
-
mission = "Handle direct user coordination, execution oversight, and high-context operating tasks."
|
|
13
|
-
capability_tags = ["operator", "coordination", "planning", "delivery"]
|
|
14
|
-
preferred_task_classes = ["interactive", "handoff", "workspace_health"]
|
|
15
|
-
delivery_preferences = ["gateway_telegram_main"]
|
|
16
|
-
model_lane_preferences = ["local_report", "interactive_primary"]
|
|
17
|
-
trust_level = "high"
|
|
18
|
-
|
|
19
|
-
[peers.rook]
|
|
20
|
-
agent_id = "secondary"
|
|
21
|
-
label = "Rook"
|
|
22
|
-
delivery_profile = "gateway_telegram_main"
|
|
23
|
-
session_keys = ["agent:secondary:main"]
|
|
24
|
-
|
|
25
|
-
[peers.rook.card]
|
|
26
|
-
role = "Analysis and reporting specialist"
|
|
27
|
-
mission = "Own analytical reasoning, reporting, and follow-through tasks."
|
|
28
|
-
capability_tags = ["analysis", "reporting"]
|
|
29
|
-
preferred_task_classes = ["analysis", "memory_rollup", "reporting"]
|
|
30
|
-
delivery_preferences = ["gateway_telegram_main"]
|
|
31
|
-
model_lane_preferences = ["local_report"]
|
|
32
|
-
trust_level = "high"
|
|
1
|
+
# Peer agent definitions
|
|
2
|
+
# Replace session_keys and delivery details with your own values.
|
|
3
|
+
|
|
4
|
+
[peers.kodi]
|
|
5
|
+
agent_id = "main"
|
|
6
|
+
label = "Kodi"
|
|
7
|
+
delivery_profile = "gateway_telegram_main"
|
|
8
|
+
session_keys = ["agent:main:main"]
|
|
9
|
+
|
|
10
|
+
[peers.kodi.card]
|
|
11
|
+
role = "Primary operator-facing collaborator"
|
|
12
|
+
mission = "Handle direct user coordination, execution oversight, and high-context operating tasks."
|
|
13
|
+
capability_tags = ["operator", "coordination", "planning", "delivery"]
|
|
14
|
+
preferred_task_classes = ["interactive", "handoff", "workspace_health"]
|
|
15
|
+
delivery_preferences = ["gateway_telegram_main"]
|
|
16
|
+
model_lane_preferences = ["local_report", "interactive_primary"]
|
|
17
|
+
trust_level = "high"
|
|
18
|
+
|
|
19
|
+
[peers.rook]
|
|
20
|
+
agent_id = "secondary"
|
|
21
|
+
label = "Rook"
|
|
22
|
+
delivery_profile = "gateway_telegram_main"
|
|
23
|
+
session_keys = ["agent:secondary:main"]
|
|
24
|
+
|
|
25
|
+
[peers.rook.card]
|
|
26
|
+
role = "Analysis and reporting specialist"
|
|
27
|
+
mission = "Own analytical reasoning, reporting, and follow-through tasks."
|
|
28
|
+
capability_tags = ["analysis", "reporting"]
|
|
29
|
+
preferred_task_classes = ["analysis", "memory_rollup", "reporting"]
|
|
30
|
+
delivery_preferences = ["gateway_telegram_main"]
|
|
31
|
+
model_lane_preferences = ["local_report"]
|
|
32
|
+
trust_level = "high"
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
# Peer agent configuration
|
|
2
|
-
# Copy this file to peers.toml and fill in your own values.
|
|
3
|
-
|
|
4
|
-
[peers.alpha]
|
|
5
|
-
agent_id = "main"
|
|
6
|
-
label = "Alpha"
|
|
7
|
-
delivery_profile = "gateway_telegram_main"
|
|
8
|
-
session_keys = ["agent:main:telegram:direct:YOUR_CHAT_ID", "agent:main:main"]
|
|
9
|
-
|
|
10
|
-
[peers.alpha.card]
|
|
11
|
-
role = "Primary operator-facing collaborator"
|
|
12
|
-
mission = "Handle direct user coordination, execution oversight, and high-context operating tasks."
|
|
13
|
-
capability_tags = ["operator", "coordination", "planning", "delivery"]
|
|
14
|
-
preferred_task_classes = ["interactive", "handoff", "workspace_health"]
|
|
15
|
-
delivery_preferences = ["gateway_telegram_main"]
|
|
16
|
-
model_lane_preferences = ["local_report", "interactive_primary"]
|
|
17
|
-
trust_level = "high"
|
|
18
|
-
|
|
19
|
-
[peers.bravo]
|
|
20
|
-
agent_id = "secondary"
|
|
21
|
-
label = "Bravo"
|
|
22
|
-
delivery_profile = "gateway_telegram_main"
|
|
23
|
-
session_keys = ["agent:secondary:telegram:direct:YOUR_CHAT_ID", "agent:secondary:main"]
|
|
24
|
-
|
|
25
|
-
[peers.bravo.card]
|
|
26
|
-
role = "Analysis and reporting specialist"
|
|
27
|
-
mission = "Own analytical reasoning, reporting, and follow-through tasks."
|
|
28
|
-
capability_tags = ["analysis", "reporting"]
|
|
29
|
-
preferred_task_classes = ["analysis", "memory_rollup", "reporting"]
|
|
30
|
-
delivery_preferences = ["gateway_telegram_main"]
|
|
31
|
-
model_lane_preferences = ["local_report"]
|
|
32
|
-
trust_level = "high"
|
|
1
|
+
# Peer agent configuration
|
|
2
|
+
# Copy this file to peers.toml and fill in your own values.
|
|
3
|
+
|
|
4
|
+
[peers.alpha]
|
|
5
|
+
agent_id = "main"
|
|
6
|
+
label = "Alpha"
|
|
7
|
+
delivery_profile = "gateway_telegram_main"
|
|
8
|
+
session_keys = ["agent:main:telegram:direct:YOUR_CHAT_ID", "agent:main:main"]
|
|
9
|
+
|
|
10
|
+
[peers.alpha.card]
|
|
11
|
+
role = "Primary operator-facing collaborator"
|
|
12
|
+
mission = "Handle direct user coordination, execution oversight, and high-context operating tasks."
|
|
13
|
+
capability_tags = ["operator", "coordination", "planning", "delivery"]
|
|
14
|
+
preferred_task_classes = ["interactive", "handoff", "workspace_health"]
|
|
15
|
+
delivery_preferences = ["gateway_telegram_main"]
|
|
16
|
+
model_lane_preferences = ["local_report", "interactive_primary"]
|
|
17
|
+
trust_level = "high"
|
|
18
|
+
|
|
19
|
+
[peers.bravo]
|
|
20
|
+
agent_id = "secondary"
|
|
21
|
+
label = "Bravo"
|
|
22
|
+
delivery_profile = "gateway_telegram_main"
|
|
23
|
+
session_keys = ["agent:secondary:telegram:direct:YOUR_CHAT_ID", "agent:secondary:main"]
|
|
24
|
+
|
|
25
|
+
[peers.bravo.card]
|
|
26
|
+
role = "Analysis and reporting specialist"
|
|
27
|
+
mission = "Own analytical reasoning, reporting, and follow-through tasks."
|
|
28
|
+
capability_tags = ["analysis", "reporting"]
|
|
29
|
+
preferred_task_classes = ["analysis", "memory_rollup", "reporting"]
|
|
30
|
+
delivery_preferences = ["gateway_telegram_main"]
|
|
31
|
+
model_lane_preferences = ["local_report"]
|
|
32
|
+
trust_level = "high"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
id = "default"
|
|
2
|
-
allow_durable_writes = true
|
|
3
|
-
allow_identity_updates = false
|
|
4
|
-
require_source_reference = true
|
|
5
|
-
require_write_reason = true
|
|
6
|
-
max_writes_per_run = 5
|
|
7
|
-
|
|
8
|
-
[categories]
|
|
9
|
-
allowed = ["decision", "preference", "workflow_rule", "artifact_summary"]
|
|
10
|
-
blocked = ["ephemeral_chatter", "raw_tool_output", "unverified_external_claim"]
|
|
1
|
+
id = "default"
|
|
2
|
+
allow_durable_writes = true
|
|
3
|
+
allow_identity_updates = false
|
|
4
|
+
require_source_reference = true
|
|
5
|
+
require_write_reason = true
|
|
6
|
+
max_writes_per_run = 5
|
|
7
|
+
|
|
8
|
+
[categories]
|
|
9
|
+
allowed = ["decision", "preference", "workflow_rule", "artifact_summary"]
|
|
10
|
+
blocked = ["ephemeral_chatter", "raw_tool_output", "unverified_external_claim"]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
id = "heartbeat"
|
|
2
|
-
allow_durable_writes = false
|
|
3
|
-
require_source_reference = true
|
|
4
|
-
require_write_reason = true
|
|
5
|
-
max_writes_per_run = 0
|
|
1
|
+
id = "heartbeat"
|
|
2
|
+
allow_durable_writes = false
|
|
3
|
+
require_source_reference = true
|
|
4
|
+
require_write_reason = true
|
|
5
|
+
max_writes_per_run = 0
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
id = "ops"
|
|
2
|
-
allow_durable_writes = true
|
|
3
|
-
allow_identity_updates = false
|
|
4
|
-
require_source_reference = true
|
|
5
|
-
require_write_reason = true
|
|
6
|
-
max_writes_per_run = 3
|
|
7
|
-
|
|
8
|
-
[categories]
|
|
9
|
-
allowed = ["health_summary", "workflow_rule", "artifact_summary"]
|
|
10
|
-
blocked = ["ephemeral_chatter", "raw_tool_output", "unverified_external_claim"]
|
|
1
|
+
id = "ops"
|
|
2
|
+
allow_durable_writes = true
|
|
3
|
+
allow_identity_updates = false
|
|
4
|
+
require_source_reference = true
|
|
5
|
+
require_write_reason = true
|
|
6
|
+
max_writes_per_run = 3
|
|
7
|
+
|
|
8
|
+
[categories]
|
|
9
|
+
allowed = ["health_summary", "workflow_rule", "artifact_summary"]
|
|
10
|
+
blocked = ["ephemeral_chatter", "raw_tool_output", "unverified_external_claim"]
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
id = "heartbeat_minimal"
|
|
2
|
-
default = "deny"
|
|
3
|
-
allowed = ["read_file", "list_dir", "check_status"]
|
|
4
|
-
blocked = ["apply_patch", "send_email", "post_web", "delete_file", "reset_repo"]
|
|
5
|
-
|
|
6
|
-
[limits]
|
|
7
|
-
max_parallel = 2
|
|
8
|
-
require_approval_for_network = true
|
|
1
|
+
id = "heartbeat_minimal"
|
|
2
|
+
default = "deny"
|
|
3
|
+
allowed = ["read_file", "list_dir", "check_status"]
|
|
4
|
+
blocked = ["apply_patch", "send_email", "post_web", "delete_file", "reset_repo"]
|
|
5
|
+
|
|
6
|
+
[limits]
|
|
7
|
+
max_parallel = 2
|
|
8
|
+
require_approval_for_network = true
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
id = "interactive_safe"
|
|
2
|
-
default = "deny"
|
|
3
|
-
allowed = ["read_file", "write_file", "list_dir", "shell_exec", "http_fetch", "memory_search", "write_memory", "web_search", "trigger_job", "lcm_recall", "session_search", "load_skill", "list_skills"]
|
|
4
|
-
blocked = ["send_email", "post_web", "delete_file", "reset_repo"]
|
|
5
|
-
|
|
6
|
-
[limits]
|
|
7
|
-
max_parallel = 3
|
|
8
|
-
require_approval_for_network = true
|
|
1
|
+
id = "interactive_safe"
|
|
2
|
+
default = "deny"
|
|
3
|
+
allowed = ["read_file", "write_file", "list_dir", "shell_exec", "http_fetch", "memory_search", "write_memory", "web_search", "trigger_job", "lcm_recall", "session_search", "load_skill", "list_skills"]
|
|
4
|
+
blocked = ["send_email", "post_web", "delete_file", "reset_repo"]
|
|
5
|
+
|
|
6
|
+
[limits]
|
|
7
|
+
max_parallel = 3
|
|
8
|
+
require_approval_for_network = true
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
id = "ops_bounded"
|
|
2
|
-
default = "deny"
|
|
3
|
-
allowed = ["read_file", "search_file", "list_dir", "apply_patch", "check_status", "run_tests", "memory_search"]
|
|
4
|
-
blocked = ["send_email", "post_web", "delete_file", "reset_repo"]
|
|
5
|
-
|
|
6
|
-
[limits]
|
|
7
|
-
max_parallel = 3
|
|
8
|
-
require_approval_for_network = true
|
|
1
|
+
id = "ops_bounded"
|
|
2
|
+
default = "deny"
|
|
3
|
+
allowed = ["read_file", "search_file", "list_dir", "apply_patch", "check_status", "run_tests", "memory_search"]
|
|
4
|
+
blocked = ["send_email", "post_web", "delete_file", "reset_repo"]
|
|
5
|
+
|
|
6
|
+
[limits]
|
|
7
|
+
max_parallel = 3
|
|
8
|
+
require_approval_for_network = true
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
id = "orchestrator"
|
|
2
|
-
default = "deny"
|
|
3
|
-
allowed = ["delegate_agent", "delegate_cli"]
|
|
4
|
-
blocked = ["read_file", "write_file", "shell_exec"]
|
|
5
|
-
|
|
6
|
-
[limits]
|
|
7
|
-
require_approval_for_network = false
|
|
1
|
+
id = "orchestrator"
|
|
2
|
+
default = "deny"
|
|
3
|
+
allowed = ["delegate_agent", "delegate_cli"]
|
|
4
|
+
blocked = ["read_file", "write_file", "shell_exec"]
|
|
5
|
+
|
|
6
|
+
[limits]
|
|
7
|
+
require_approval_for_network = false
|