@probelabs/visor 0.1.178 → 0.1.179
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/defaults/assistant.yaml +38 -16
- package/defaults/skills/code-explorer.yaml +8 -8
- package/dist/agent-protocol/tasks-cli-handler.d.ts.map +1 -1
- package/dist/agent-protocol/track-execution.d.ts.map +1 -1
- package/dist/defaults/assistant.yaml +38 -16
- package/dist/defaults/skills/code-explorer.yaml +8 -8
- package/dist/frontends/slack-frontend.d.ts +6 -0
- package/dist/frontends/slack-frontend.d.ts.map +1 -1
- package/dist/index.js +305 -87
- package/dist/output/traces/{run-2026-03-11T06-33-05-398Z.ndjson → run-2026-03-11T13-57-13-250Z.ndjson} +96 -96
- package/dist/output/traces/{run-2026-03-11T06-33-47-884Z.ndjson → run-2026-03-11T13-57-55-455Z.ndjson} +1932 -1932
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/sdk/{a2a-frontend-WYBMBBYG.mjs → a2a-frontend-HKPCABGG.mjs} +2 -2
- package/dist/sdk/{a2a-frontend-U3PTNCLR.mjs → a2a-frontend-KJFLIZJT.mjs} +2 -2
- package/dist/sdk/{check-provider-registry-3DZOXYIA.mjs → check-provider-registry-EXP6DYGL.mjs} +5 -5
- package/dist/sdk/{check-provider-registry-T5J3H2N7.mjs → check-provider-registry-SYAHJMWJ.mjs} +5 -5
- package/dist/sdk/{check-provider-registry-ZX76MY2L.mjs → check-provider-registry-WKVXEZXA.mjs} +5 -5
- package/dist/sdk/{chunk-AK64Y6Y2.mjs → chunk-BFQUKQQI.mjs} +163 -124
- package/dist/sdk/chunk-BFQUKQQI.mjs.map +1 -0
- package/dist/sdk/{chunk-6YGCACBF.mjs → chunk-CHARL3TY.mjs} +2 -2
- package/dist/sdk/{chunk-6YGCACBF.mjs.map → chunk-CHARL3TY.mjs.map} +1 -1
- package/dist/sdk/{chunk-4ECMTCOM.mjs → chunk-DMUBFE4V.mjs} +2 -2
- package/dist/sdk/{chunk-B7XHSG3L.mjs → chunk-FTPLYUQ3.mjs} +163 -124
- package/dist/sdk/chunk-FTPLYUQ3.mjs.map +1 -0
- package/dist/sdk/{chunk-ANEKFNAS.mjs → chunk-JTRN5AR7.mjs} +163 -124
- package/dist/sdk/chunk-JTRN5AR7.mjs.map +1 -0
- package/dist/sdk/{chunk-ENSZDV3O.mjs → chunk-NNL5M6QR.mjs} +3 -3
- package/dist/sdk/{chunk-CDRKH5HH.mjs → chunk-OYHDBTKY.mjs} +2 -2
- package/dist/sdk/{chunk-KG6PM4OL.mjs → chunk-WSPF7FAK.mjs} +3 -3
- package/dist/sdk/{chunk-KG6PM4OL.mjs.map → chunk-WSPF7FAK.mjs.map} +1 -1
- package/dist/sdk/{chunk-WZS4ARZB.mjs → chunk-ZJYQMNPA.mjs} +3 -3
- package/dist/sdk/{failure-condition-evaluator-P3MS5DRL.mjs → failure-condition-evaluator-CBJ2DP4X.mjs} +3 -3
- package/dist/sdk/{failure-condition-evaluator-MMPKQGUA.mjs → failure-condition-evaluator-V2YGFRKO.mjs} +3 -3
- package/dist/sdk/{github-frontend-7RLEBJWG.mjs → github-frontend-4LM4NAZK.mjs} +3 -3
- package/dist/sdk/{github-frontend-QTKOYB56.mjs → github-frontend-VGU6PNQH.mjs} +3 -3
- package/dist/sdk/{host-I2TBBKD5.mjs → host-AMJG7BIE.mjs} +4 -4
- package/dist/sdk/{host-SE3MQHWG.mjs → host-XXPPPC76.mjs} +4 -4
- package/dist/sdk/{routing-2X6QF5IW.mjs → routing-W6AUOIGF.mjs} +4 -4
- package/dist/sdk/{routing-QHXBQS6X.mjs → routing-YAYBIVPL.mjs} +4 -4
- package/dist/sdk/{schedule-tool-R6JJIDZ6.mjs → schedule-tool-BVWTYA2Y.mjs} +5 -5
- package/dist/sdk/{schedule-tool-W4SQ334O.mjs → schedule-tool-OIVJDIDK.mjs} +5 -5
- package/dist/sdk/{schedule-tool-MKT5FZ6J.mjs → schedule-tool-T3PAV4N3.mjs} +5 -5
- package/dist/sdk/{schedule-tool-handler-AOMZV3Q3.mjs → schedule-tool-handler-AYJP3FGI.mjs} +5 -5
- package/dist/sdk/{schedule-tool-handler-MPJFLH4J.mjs → schedule-tool-handler-SJF4ZKSB.mjs} +5 -5
- package/dist/sdk/{schedule-tool-handler-WY7WCFE5.mjs → schedule-tool-handler-VOCVDJSM.mjs} +5 -5
- package/dist/sdk/sdk.js +214 -138
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +4 -4
- package/dist/sdk/{slack-frontend-XKSIOUXB.mjs → slack-frontend-OWD7BSWF.mjs} +22 -3
- package/dist/sdk/slack-frontend-OWD7BSWF.mjs.map +1 -0
- package/dist/sdk/{trace-helpers-4ADQ4GB3.mjs → trace-helpers-FZAVMGTD.mjs} +2 -2
- package/dist/sdk/{trace-helpers-K47ZVJSU.mjs → trace-helpers-QL2B75AK.mjs} +2 -2
- package/dist/sdk/{track-execution-XTCZBUWX.mjs → track-execution-2Q66SXBZ.mjs} +20 -2
- package/dist/sdk/{track-execution-XTCZBUWX.mjs.map → track-execution-2Q66SXBZ.mjs.map} +1 -1
- package/dist/sdk/{workflow-check-provider-WHZP7BDF.mjs → workflow-check-provider-IXW6BMQA.mjs} +5 -5
- package/dist/sdk/{workflow-check-provider-WZN3B2S2.mjs → workflow-check-provider-JW43OGRQ.mjs} +5 -5
- package/dist/sdk/{workflow-check-provider-A3YH2UZJ.mjs → workflow-check-provider-ZG2JHKBH.mjs} +5 -5
- package/dist/traces/{run-2026-03-11T06-33-05-398Z.ndjson → run-2026-03-11T13-57-13-250Z.ndjson} +96 -96
- package/dist/traces/{run-2026-03-11T06-33-47-884Z.ndjson → run-2026-03-11T13-57-55-455Z.ndjson} +1932 -1932
- package/dist/utils/workspace-manager.d.ts +2 -0
- package/dist/utils/workspace-manager.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/sdk/chunk-AK64Y6Y2.mjs.map +0 -1
- package/dist/sdk/chunk-ANEKFNAS.mjs.map +0 -1
- package/dist/sdk/chunk-B7XHSG3L.mjs.map +0 -1
- package/dist/sdk/slack-frontend-XKSIOUXB.mjs.map +0 -1
- /package/dist/sdk/{a2a-frontend-U3PTNCLR.mjs.map → a2a-frontend-HKPCABGG.mjs.map} +0 -0
- /package/dist/sdk/{a2a-frontend-WYBMBBYG.mjs.map → a2a-frontend-KJFLIZJT.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-3DZOXYIA.mjs.map → check-provider-registry-EXP6DYGL.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-T5J3H2N7.mjs.map → check-provider-registry-SYAHJMWJ.mjs.map} +0 -0
- /package/dist/sdk/{check-provider-registry-ZX76MY2L.mjs.map → check-provider-registry-WKVXEZXA.mjs.map} +0 -0
- /package/dist/sdk/{chunk-4ECMTCOM.mjs.map → chunk-DMUBFE4V.mjs.map} +0 -0
- /package/dist/sdk/{chunk-ENSZDV3O.mjs.map → chunk-NNL5M6QR.mjs.map} +0 -0
- /package/dist/sdk/{chunk-CDRKH5HH.mjs.map → chunk-OYHDBTKY.mjs.map} +0 -0
- /package/dist/sdk/{chunk-WZS4ARZB.mjs.map → chunk-ZJYQMNPA.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-MMPKQGUA.mjs.map → failure-condition-evaluator-CBJ2DP4X.mjs.map} +0 -0
- /package/dist/sdk/{failure-condition-evaluator-P3MS5DRL.mjs.map → failure-condition-evaluator-V2YGFRKO.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-7RLEBJWG.mjs.map → github-frontend-4LM4NAZK.mjs.map} +0 -0
- /package/dist/sdk/{github-frontend-QTKOYB56.mjs.map → github-frontend-VGU6PNQH.mjs.map} +0 -0
- /package/dist/sdk/{host-I2TBBKD5.mjs.map → host-AMJG7BIE.mjs.map} +0 -0
- /package/dist/sdk/{host-SE3MQHWG.mjs.map → host-XXPPPC76.mjs.map} +0 -0
- /package/dist/sdk/{routing-2X6QF5IW.mjs.map → routing-W6AUOIGF.mjs.map} +0 -0
- /package/dist/sdk/{routing-QHXBQS6X.mjs.map → routing-YAYBIVPL.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-MKT5FZ6J.mjs.map → schedule-tool-BVWTYA2Y.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-R6JJIDZ6.mjs.map → schedule-tool-OIVJDIDK.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-W4SQ334O.mjs.map → schedule-tool-T3PAV4N3.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-AOMZV3Q3.mjs.map → schedule-tool-handler-AYJP3FGI.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-MPJFLH4J.mjs.map → schedule-tool-handler-SJF4ZKSB.mjs.map} +0 -0
- /package/dist/sdk/{schedule-tool-handler-WY7WCFE5.mjs.map → schedule-tool-handler-VOCVDJSM.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-4ADQ4GB3.mjs.map → trace-helpers-FZAVMGTD.mjs.map} +0 -0
- /package/dist/sdk/{trace-helpers-K47ZVJSU.mjs.map → trace-helpers-QL2B75AK.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-A3YH2UZJ.mjs.map → workflow-check-provider-IXW6BMQA.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-WHZP7BDF.mjs.map → workflow-check-provider-JW43OGRQ.mjs.map} +0 -0
- /package/dist/sdk/{workflow-check-provider-WZN3B2S2.mjs.map → workflow-check-provider-ZG2JHKBH.mjs.map} +0 -0
package/defaults/assistant.yaml
CHANGED
|
@@ -270,11 +270,11 @@ inputs:
|
|
|
270
270
|
allowed_commands:
|
|
271
271
|
type: array
|
|
272
272
|
items: { type: string }
|
|
273
|
-
description: Bash command patterns this skill is allowed to run (e.g., 'git:log:*')
|
|
273
|
+
description: Bash command patterns this skill is allowed to run (e.g., 'git:log:*'). Only applied for skills with non-workflow tools.
|
|
274
274
|
disallowed_commands:
|
|
275
275
|
type: array
|
|
276
276
|
items: { type: string }
|
|
277
|
-
description: Bash command patterns this skill should not run (e.g., 'git:push:*')
|
|
277
|
+
description: Bash command patterns this skill should not run (e.g., 'git:push:*'). Only applied for skills with non-workflow tools.
|
|
278
278
|
always:
|
|
279
279
|
type: boolean
|
|
280
280
|
description: Always activate this skill regardless of classification
|
|
@@ -293,7 +293,7 @@ inputs:
|
|
|
293
293
|
- name: max_iterations
|
|
294
294
|
required: false
|
|
295
295
|
description: Maximum AI iterations
|
|
296
|
-
default:
|
|
296
|
+
default: 100
|
|
297
297
|
schema:
|
|
298
298
|
type: number
|
|
299
299
|
|
|
@@ -654,18 +654,34 @@ steps:
|
|
|
654
654
|
}
|
|
655
655
|
}
|
|
656
656
|
|
|
657
|
-
//
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
657
|
+
// Only merge bash command patterns from skills whose tools run in the
|
|
658
|
+
// parent orchestrator (MCP servers, built-ins). Skip skills that only have
|
|
659
|
+
// workflow-based tools — those are sub-workflows with their own bash config.
|
|
660
|
+
let hasNonWorkflowTools = false;
|
|
661
|
+
if (normalizedTools && typeof normalizedTools === 'object') {
|
|
662
|
+
const tNames = Object.keys(normalizedTools);
|
|
663
|
+
for (let i = 0; i < tNames.length; i++) {
|
|
664
|
+
const tc = normalizedTools[tNames[i]];
|
|
665
|
+
if (!tc || !tc.workflow) {
|
|
666
|
+
hasNonWorkflowTools = true;
|
|
667
|
+
break;
|
|
662
668
|
}
|
|
663
669
|
}
|
|
664
670
|
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
671
|
+
|
|
672
|
+
if (hasNonWorkflowTools) {
|
|
673
|
+
if (Array.isArray(skill.allowed_commands)) {
|
|
674
|
+
for (let j = 0; j < skill.allowed_commands.length; j++) {
|
|
675
|
+
if (bashAllow.indexOf(skill.allowed_commands[j]) === -1) {
|
|
676
|
+
bashAllow.push(skill.allowed_commands[j]);
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
if (Array.isArray(skill.disallowed_commands)) {
|
|
681
|
+
for (let j = 0; j < skill.disallowed_commands.length; j++) {
|
|
682
|
+
if (bashDeny.indexOf(skill.disallowed_commands[j]) === -1) {
|
|
683
|
+
bashDeny.push(skill.disallowed_commands[j]);
|
|
684
|
+
}
|
|
669
685
|
}
|
|
670
686
|
}
|
|
671
687
|
}
|
|
@@ -871,6 +887,16 @@ steps:
|
|
|
871
887
|
If you catch yourself about to use bash or file tools for code operations — STOP and
|
|
872
888
|
delegate to the correct skill tool instead.
|
|
873
889
|
|
|
890
|
+
## CRITICAL: Do Not Retry Failed Engineer Calls With the Same Approach
|
|
891
|
+
When the `engineer` tool fails or returns an error/partial result:
|
|
892
|
+
- **DO NOT call engineer again with the same task** — it will hit the same obstacles
|
|
893
|
+
- **Acknowledge the failure** to the user and explain what went wrong
|
|
894
|
+
- **Only retry if you have a fundamentally different approach** (different strategy,
|
|
895
|
+
different files, different technique — not just rephrasing the same request)
|
|
896
|
+
- If engineer hit its iteration limit or timed out, it means the task is too complex
|
|
897
|
+
for a single tool call — break it into smaller, independent pieces or report back
|
|
898
|
+
- Never poll/loop waiting for CI to pass — report the current status and let the user decide
|
|
899
|
+
|
|
874
900
|
## CRITICAL: Preserve Tool Output Details
|
|
875
901
|
When tools return detailed data (lists, analytics, search results):
|
|
876
902
|
- **DO NOT summarize or compress** the tool output
|
|
@@ -2244,10 +2270,6 @@ tests:
|
|
|
2244
2270
|
request needs codebase exploration, understanding implementation details,
|
|
2245
2271
|
code search, or documentation questions. READ-ONLY — cannot modify files,
|
|
2246
2272
|
only investigate and answer questions.
|
|
2247
|
-
allowed_commands:
|
|
2248
|
-
- "git:log:*"
|
|
2249
|
-
- "git:show:*"
|
|
2250
|
-
- "git:diff:*"
|
|
2251
2273
|
knowledge: |
|
|
2252
2274
|
## Code Explorer
|
|
2253
2275
|
Use the code-talk tool to explore code repositories.
|
|
@@ -18,23 +18,23 @@ description: >
|
|
|
18
18
|
request needs codebase exploration, understanding implementation details,
|
|
19
19
|
code search, or documentation questions. READ-ONLY — cannot modify files,
|
|
20
20
|
only investigate and answer questions.
|
|
21
|
-
allowed_commands:
|
|
22
|
-
- "git:log:*"
|
|
23
|
-
- "git:show:*"
|
|
24
|
-
- "git:diff:*"
|
|
25
21
|
knowledge: |
|
|
26
|
-
## Code Explorer
|
|
27
|
-
|
|
22
|
+
## Code Explorer — MANDATORY for all code questions
|
|
23
|
+
The `code-explorer` tool is your ONLY way to read, search, or understand source code.
|
|
24
|
+
**DO NOT use bash** (git show, git diff, git log, cat, grep, find, etc.) for code tasks.
|
|
25
|
+
**ALWAYS call `code-explorer`** instead — it has full repository access and returns
|
|
26
|
+
structured answers with file references.
|
|
27
|
+
|
|
28
28
|
The tool returns `confidence` ("high"/"medium"/"low") and `confidence_reason`.
|
|
29
29
|
- If confidence "high", trust the answer — do NOT re-call with rephrased question
|
|
30
30
|
- Only call again for a genuinely DIFFERENT aspect of the codebase
|
|
31
31
|
- If confidence "medium" or "low", check confidence_reason for what to refine
|
|
32
32
|
|
|
33
33
|
## Usage Instructions
|
|
34
|
-
1. Call the code-explorer tool with the user's question
|
|
34
|
+
1. Call the `code-explorer` tool with the user's question — do NOT try to answer code questions yourself
|
|
35
35
|
2. Use the answer from the tool result as your response
|
|
36
36
|
3. Include the references (file paths with URLs) in your answer
|
|
37
|
-
4. Do NOT generate a generic response
|
|
37
|
+
4. Do NOT generate a generic response — relay what the tool found
|
|
38
38
|
tools:
|
|
39
39
|
code-explorer:
|
|
40
40
|
workflow: code-talk
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks-cli-handler.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/tasks-cli-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tasks-cli-handler.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/tasks-cli-handler.ts"],"names":[],"mappings":"AAslBA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-execution.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/track-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,OAAO,GACP,UAAU,GACV,OAAO,GACP,UAAU,GACV,OAAO,GACP,KAAK,GACL,KAAK,GACL,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"track-execution.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/agent-protocol/track-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,OAAO,GACP,UAAU,GACV,OAAO,GACP,UAAU,GACV,OAAO,GACP,KAAK,GACL,KAAK,GACL,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,CAmFzC"}
|
|
@@ -270,11 +270,11 @@ inputs:
|
|
|
270
270
|
allowed_commands:
|
|
271
271
|
type: array
|
|
272
272
|
items: { type: string }
|
|
273
|
-
description: Bash command patterns this skill is allowed to run (e.g., 'git:log:*')
|
|
273
|
+
description: Bash command patterns this skill is allowed to run (e.g., 'git:log:*'). Only applied for skills with non-workflow tools.
|
|
274
274
|
disallowed_commands:
|
|
275
275
|
type: array
|
|
276
276
|
items: { type: string }
|
|
277
|
-
description: Bash command patterns this skill should not run (e.g., 'git:push:*')
|
|
277
|
+
description: Bash command patterns this skill should not run (e.g., 'git:push:*'). Only applied for skills with non-workflow tools.
|
|
278
278
|
always:
|
|
279
279
|
type: boolean
|
|
280
280
|
description: Always activate this skill regardless of classification
|
|
@@ -293,7 +293,7 @@ inputs:
|
|
|
293
293
|
- name: max_iterations
|
|
294
294
|
required: false
|
|
295
295
|
description: Maximum AI iterations
|
|
296
|
-
default:
|
|
296
|
+
default: 100
|
|
297
297
|
schema:
|
|
298
298
|
type: number
|
|
299
299
|
|
|
@@ -654,18 +654,34 @@ steps:
|
|
|
654
654
|
}
|
|
655
655
|
}
|
|
656
656
|
|
|
657
|
-
//
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
657
|
+
// Only merge bash command patterns from skills whose tools run in the
|
|
658
|
+
// parent orchestrator (MCP servers, built-ins). Skip skills that only have
|
|
659
|
+
// workflow-based tools — those are sub-workflows with their own bash config.
|
|
660
|
+
let hasNonWorkflowTools = false;
|
|
661
|
+
if (normalizedTools && typeof normalizedTools === 'object') {
|
|
662
|
+
const tNames = Object.keys(normalizedTools);
|
|
663
|
+
for (let i = 0; i < tNames.length; i++) {
|
|
664
|
+
const tc = normalizedTools[tNames[i]];
|
|
665
|
+
if (!tc || !tc.workflow) {
|
|
666
|
+
hasNonWorkflowTools = true;
|
|
667
|
+
break;
|
|
662
668
|
}
|
|
663
669
|
}
|
|
664
670
|
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
671
|
+
|
|
672
|
+
if (hasNonWorkflowTools) {
|
|
673
|
+
if (Array.isArray(skill.allowed_commands)) {
|
|
674
|
+
for (let j = 0; j < skill.allowed_commands.length; j++) {
|
|
675
|
+
if (bashAllow.indexOf(skill.allowed_commands[j]) === -1) {
|
|
676
|
+
bashAllow.push(skill.allowed_commands[j]);
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
if (Array.isArray(skill.disallowed_commands)) {
|
|
681
|
+
for (let j = 0; j < skill.disallowed_commands.length; j++) {
|
|
682
|
+
if (bashDeny.indexOf(skill.disallowed_commands[j]) === -1) {
|
|
683
|
+
bashDeny.push(skill.disallowed_commands[j]);
|
|
684
|
+
}
|
|
669
685
|
}
|
|
670
686
|
}
|
|
671
687
|
}
|
|
@@ -871,6 +887,16 @@ steps:
|
|
|
871
887
|
If you catch yourself about to use bash or file tools for code operations — STOP and
|
|
872
888
|
delegate to the correct skill tool instead.
|
|
873
889
|
|
|
890
|
+
## CRITICAL: Do Not Retry Failed Engineer Calls With the Same Approach
|
|
891
|
+
When the `engineer` tool fails or returns an error/partial result:
|
|
892
|
+
- **DO NOT call engineer again with the same task** — it will hit the same obstacles
|
|
893
|
+
- **Acknowledge the failure** to the user and explain what went wrong
|
|
894
|
+
- **Only retry if you have a fundamentally different approach** (different strategy,
|
|
895
|
+
different files, different technique — not just rephrasing the same request)
|
|
896
|
+
- If engineer hit its iteration limit or timed out, it means the task is too complex
|
|
897
|
+
for a single tool call — break it into smaller, independent pieces or report back
|
|
898
|
+
- Never poll/loop waiting for CI to pass — report the current status and let the user decide
|
|
899
|
+
|
|
874
900
|
## CRITICAL: Preserve Tool Output Details
|
|
875
901
|
When tools return detailed data (lists, analytics, search results):
|
|
876
902
|
- **DO NOT summarize or compress** the tool output
|
|
@@ -2244,10 +2270,6 @@ tests:
|
|
|
2244
2270
|
request needs codebase exploration, understanding implementation details,
|
|
2245
2271
|
code search, or documentation questions. READ-ONLY — cannot modify files,
|
|
2246
2272
|
only investigate and answer questions.
|
|
2247
|
-
allowed_commands:
|
|
2248
|
-
- "git:log:*"
|
|
2249
|
-
- "git:show:*"
|
|
2250
|
-
- "git:diff:*"
|
|
2251
2273
|
knowledge: |
|
|
2252
2274
|
## Code Explorer
|
|
2253
2275
|
Use the code-talk tool to explore code repositories.
|
|
@@ -18,23 +18,23 @@ description: >
|
|
|
18
18
|
request needs codebase exploration, understanding implementation details,
|
|
19
19
|
code search, or documentation questions. READ-ONLY — cannot modify files,
|
|
20
20
|
only investigate and answer questions.
|
|
21
|
-
allowed_commands:
|
|
22
|
-
- "git:log:*"
|
|
23
|
-
- "git:show:*"
|
|
24
|
-
- "git:diff:*"
|
|
25
21
|
knowledge: |
|
|
26
|
-
## Code Explorer
|
|
27
|
-
|
|
22
|
+
## Code Explorer — MANDATORY for all code questions
|
|
23
|
+
The `code-explorer` tool is your ONLY way to read, search, or understand source code.
|
|
24
|
+
**DO NOT use bash** (git show, git diff, git log, cat, grep, find, etc.) for code tasks.
|
|
25
|
+
**ALWAYS call `code-explorer`** instead — it has full repository access and returns
|
|
26
|
+
structured answers with file references.
|
|
27
|
+
|
|
28
28
|
The tool returns `confidence` ("high"/"medium"/"low") and `confidence_reason`.
|
|
29
29
|
- If confidence "high", trust the answer — do NOT re-call with rephrased question
|
|
30
30
|
- Only call again for a genuinely DIFFERENT aspect of the codebase
|
|
31
31
|
- If confidence "medium" or "low", check confidence_reason for what to refine
|
|
32
32
|
|
|
33
33
|
## Usage Instructions
|
|
34
|
-
1. Call the code-explorer tool with the user's question
|
|
34
|
+
1. Call the `code-explorer` tool with the user's question — do NOT try to answer code questions yourself
|
|
35
35
|
2. Use the answer from the tool result as your response
|
|
36
36
|
3. Include the references (file paths with URLs) in your answer
|
|
37
|
-
4. Do NOT generate a generic response
|
|
37
|
+
4. Do NOT generate a generic response — relay what the tool found
|
|
38
38
|
tools:
|
|
39
39
|
code-explorer:
|
|
40
40
|
workflow: code-talk
|
|
@@ -48,6 +48,12 @@ export declare class SlackFrontend implements Frontend {
|
|
|
48
48
|
private getInboundSlackEvent;
|
|
49
49
|
private isTelemetryEnabled;
|
|
50
50
|
private maybePostError;
|
|
51
|
+
/**
|
|
52
|
+
* Post error to Slack regardless of errorNotified flag.
|
|
53
|
+
* Used for fatal/shutdown errors that must always reach the user.
|
|
54
|
+
*/
|
|
55
|
+
private forcePostError;
|
|
56
|
+
private postErrorToSlack;
|
|
51
57
|
private isExecutionFailureIssue;
|
|
52
58
|
private maybePostExecutionFailure;
|
|
53
59
|
private ensureAcknowledgement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-frontend.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/slack-frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAYxD,KAAK,mBAAmB,GAAG;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,qBAAa,aAAc,YAAW,QAAQ;IAC5C,SAAgB,IAAI,WAAW;IAC/B,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,GAAG,CAAsB;IAEjC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAoD;gBAE/D,MAAM,CAAC,EAAE,mBAAmB;IAIxC,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"slack-frontend.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/slack-frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAYxD,KAAK,mBAAmB,GAAG;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,qBAAa,aAAc,YAAW,QAAQ;IAC5C,SAAgB,IAAI,WAAW;IAC/B,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,GAAG,CAAsB;IAEjC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAoD;gBAE/D,MAAM,CAAC,EAAE,mBAAmB;IAIxC,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAyKjC,IAAI,IAAI,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,kBAAkB;YAcZ,cAAc;IAU5B;;;OAGG;YACW,cAAc;YASd,gBAAgB;IA0D9B,OAAO,CAAC,uBAAuB;YAcjB,yBAAyB;YAgCzB,qBAAqB;YAsCrB,iBAAiB;IA6B/B;;;;OAIG;YACW,oBAAoB;IA0QlC,OAAO,CAAC,YAAY;CAWrB"}
|