@probelabs/visor 0.1.90 → 0.1.92
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/README.md +68 -2
- package/action.yml +1 -1
- package/defaults/.visor.yaml +120 -154
- package/dist/13.index.js +82 -0
- package/dist/159.index.js +38 -0
- package/dist/168.index.js +82 -0
- package/dist/201.index.js +82 -0
- package/dist/262.index.js +48 -0
- package/dist/272.index.js +82 -0
- package/dist/273.index.js +48 -0
- package/dist/320.index.js +38 -0
- package/dist/34.index.js +81 -0
- package/dist/421.index.js +48 -0
- package/dist/437.index.js +82 -0
- package/dist/441.index.js +81 -0
- package/dist/450.index.js +82 -0
- package/dist/54.index.js +81 -0
- package/dist/544.index.js +38 -0
- package/dist/558.index.js +82 -0
- package/dist/715.index.js +38 -0
- package/dist/737.index.js +82 -0
- package/dist/834.index.js +48 -0
- package/dist/85.index.js +82 -0
- package/dist/861.index.js +48 -0
- package/dist/878.index.js +81 -0
- package/dist/940.index.js +38 -0
- package/dist/989.index.js +81 -0
- package/dist/996.index.js +82 -0
- package/dist/ai-review-service.d.ts +11 -1
- package/dist/ai-review-service.d.ts.map +1 -1
- package/dist/check-execution-engine.d.ts +9 -2
- package/dist/check-execution-engine.d.ts.map +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/defaults/.visor.yaml +120 -154
- package/dist/failure-condition-evaluator.d.ts +3 -2
- package/dist/failure-condition-evaluator.d.ts.map +1 -1
- package/dist/generated/config-schema.d.ts +89 -2
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/generated/config-schema.json +109 -1
- package/dist/git-repository-analyzer.d.ts +17 -1
- package/dist/git-repository-analyzer.d.ts.map +1 -1
- package/dist/github-comments.d.ts.map +1 -1
- package/dist/github-reactions.d.ts +36 -0
- package/dist/github-reactions.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +172824 -45634
- package/dist/liquid-extensions.d.ts +3 -0
- package/dist/liquid-extensions.d.ts.map +1 -1
- package/dist/memory-store.d.ts +129 -0
- package/dist/memory-store.d.ts.map +1 -0
- package/dist/output/issue-assistant/schema.json +29 -0
- package/dist/output/issue-assistant/template.liquid +1 -0
- package/dist/output/overview/schema.json +33 -0
- package/dist/output/overview/template.liquid +16 -0
- package/dist/output-formatters.d.ts +1 -0
- package/dist/output-formatters.d.ts.map +1 -1
- package/dist/pr-analyzer.d.ts +2 -0
- package/dist/pr-analyzer.d.ts.map +1 -1
- package/dist/proto/channelz.proto +564 -0
- package/dist/providers/check-provider-registry.d.ts.map +1 -1
- package/dist/providers/command-check-provider.d.ts.map +1 -1
- package/dist/providers/github-ops-provider.d.ts +18 -0
- package/dist/providers/github-ops-provider.d.ts.map +1 -0
- package/dist/providers/memory-check-provider.d.ts +56 -0
- package/dist/providers/memory-check-provider.d.ts.map +1 -0
- package/dist/reviewer.d.ts +2 -0
- package/dist/reviewer.d.ts.map +1 -1
- package/dist/sdk/check-execution-engine-L73PFZQY.mjs +11 -0
- package/dist/sdk/chunk-2U6BIWSY.mjs +748 -0
- package/dist/sdk/chunk-2U6BIWSY.mjs.map +1 -0
- package/dist/sdk/chunk-KVHVCGY6.mjs +103 -0
- package/dist/sdk/chunk-KVHVCGY6.mjs.map +1 -0
- package/dist/sdk/{chunk-N2PPFOSF.mjs → chunk-LJHRU3WQ.mjs} +2577 -250
- package/dist/sdk/chunk-LJHRU3WQ.mjs.map +1 -0
- package/dist/sdk/chunk-TWJKAYT6.mjs +1124 -0
- package/dist/sdk/chunk-TWJKAYT6.mjs.map +1 -0
- package/dist/sdk/liquid-extensions-AFKRYROF.mjs +14 -0
- package/dist/sdk/mermaid-telemetry-LZGDD35I.mjs +61 -0
- package/dist/sdk/mermaid-telemetry-LZGDD35I.mjs.map +1 -0
- package/dist/sdk/sdk.d.mts +48 -2
- package/dist/sdk/sdk.d.ts +48 -2
- package/dist/sdk/sdk.js +5352 -767
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +112 -7
- package/dist/sdk/sdk.mjs.map +1 -1
- package/dist/sdk/tracer-init-O7RLXMJ3.mjs +10 -0
- package/dist/sdk/tracer-init-O7RLXMJ3.mjs.map +1 -0
- package/dist/session-registry.d.ts +19 -5
- package/dist/session-registry.d.ts.map +1 -1
- package/dist/telemetry/fallback-ndjson.d.ts +7 -0
- package/dist/telemetry/fallback-ndjson.d.ts.map +1 -0
- package/dist/telemetry/file-span-exporter.d.ts +17 -0
- package/dist/telemetry/file-span-exporter.d.ts.map +1 -0
- package/dist/telemetry/metrics.d.ts +13 -0
- package/dist/telemetry/metrics.d.ts.map +1 -0
- package/dist/telemetry/opentelemetry.d.ts +26 -0
- package/dist/telemetry/opentelemetry.d.ts.map +1 -0
- package/dist/telemetry/trace-helpers.d.ts +9 -0
- package/dist/telemetry/trace-helpers.d.ts.map +1 -0
- package/dist/telemetry/trace-report-exporter.d.ts +17 -0
- package/dist/telemetry/trace-report-exporter.d.ts.map +1 -0
- package/dist/traces/run-2025-10-15T07-21-47-696Z.ndjson +17 -0
- package/dist/traces/run-2025-10-15T07-21-58-106Z.ndjson +17 -0
- package/dist/traces/run-2025-10-15T07-21-58-693Z.ndjson +17 -0
- package/dist/traces/run-2025-10-15T07-21-59-167Z.ndjson +17 -0
- package/dist/traces/run-2025-10-15T07-21-59-629Z.ndjson +8 -0
- package/dist/types/cli.d.ts +4 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/config.d.ts +56 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/author-permissions.d.ts +74 -0
- package/dist/utils/author-permissions.d.ts.map +1 -0
- package/dist/utils/head-sha.d.ts +8 -0
- package/dist/utils/head-sha.d.ts.map +1 -0
- package/dist/utils/mermaid-telemetry.d.ts +3 -0
- package/dist/utils/mermaid-telemetry.d.ts.map +1 -0
- package/dist/utils/tracer-init.d.ts +12 -0
- package/dist/utils/tracer-init.d.ts.map +1 -0
- package/dist/utils/ui-helpers.d.ts +3 -0
- package/dist/utils/ui-helpers.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/sdk/check-execution-engine-Z2USLMN5.mjs +0 -9
- package/dist/sdk/chunk-FIL2OGF6.mjs +0 -68
- package/dist/sdk/chunk-FIL2OGF6.mjs.map +0 -1
- package/dist/sdk/chunk-N2PPFOSF.mjs.map +0 -1
- package/dist/sdk/liquid-extensions-KDECAJTV.mjs +0 -12
- /package/dist/sdk/{check-execution-engine-Z2USLMN5.mjs.map → check-execution-engine-L73PFZQY.mjs.map} +0 -0
- /package/dist/sdk/{liquid-extensions-KDECAJTV.mjs.map → liquid-extensions-AFKRYROF.mjs.map} +0 -0
|
@@ -69,36 +69,34 @@ checks:
|
|
|
69
69
|
overview:
|
|
70
70
|
type: ai
|
|
71
71
|
group: overview
|
|
72
|
+
schema: overview
|
|
72
73
|
prompt: |
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
{% if pr.body %}
|
|
76
|
-
## Description
|
|
77
|
-
{{ pr.body }}
|
|
78
|
-
{% endif %}
|
|
74
|
+
You are generating PR overview, to help owners of the repository to understand what this PR is above, and help reviewer to point to the right parts of the code. First you should provide detailed but concise description, mentioning all the changes.
|
|
79
75
|
|
|
80
76
|
## Files Changed Analysis
|
|
77
|
+
After you need to summarize insights from `<files_summary>`: changed files, additions/deletions, notable patterns.
|
|
81
78
|
|
|
82
|
-
|
|
79
|
+
Next ensure you cover all below:
|
|
83
80
|
|
|
84
81
|
## Architecture & Impact Assessment
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
82
|
+
- What this PR accomplishes
|
|
83
|
+
- Key technical changes introduced
|
|
84
|
+
- Affected system components
|
|
85
|
+
- Include one or more mermaid diagrams when useful to visualize component relationships or flow.
|
|
86
|
+
|
|
87
|
+
## Scope Discovery & Context Expansion
|
|
88
|
+
- From the `<files_summary>` and code diffs, infer the broader scope of impact across modules, services, and boundaries.
|
|
89
|
+
- If your environment supports code search/extract tools, use them to peek at immediately-related files (tests, configs, entrypoints) for better context. If tools are not available, infer and list what you would search next.
|
|
90
|
+
|
|
91
|
+
You may also be asked to assign labels to PR; if so use this:
|
|
92
|
+
- `tags.review-effort`: integer 1–5 estimating review effort (1=trivial, 5=very high).
|
|
93
|
+
- `tags.label`: one of [bug, chore, documentation, enhancement, feature]. Choose the best fit.
|
|
94
|
+
|
|
95
|
+
Important:
|
|
96
|
+
- Propose `tags.review-effort` and `tags.label` only for the initial PR open event.
|
|
97
|
+
- Do not change or re-suggest labels on PR update events; the repository applies labels only on `pr_opened`.
|
|
98
|
+
|
|
99
|
+
Be concise, specific, and actionable. Avoid praise or celebration.
|
|
102
100
|
on: [pr_opened, pr_updated]
|
|
103
101
|
|
|
104
102
|
# Security analysis - Critical for all projects
|
|
@@ -155,7 +153,7 @@ checks:
|
|
|
155
153
|
group: review
|
|
156
154
|
schema: code-review
|
|
157
155
|
prompt: |
|
|
158
|
-
Building on our overview
|
|
156
|
+
Building on our overview analysis, now review the code changes for performance issues.
|
|
159
157
|
|
|
160
158
|
Focus on the files listed in `<files_summary>` and analyze the code changes shown in the `<full_diff>` or `<commit_diff>` sections.
|
|
161
159
|
|
|
@@ -183,7 +181,7 @@ checks:
|
|
|
183
181
|
- Race conditions and deadlocks
|
|
184
182
|
- Inefficient parallel processing
|
|
185
183
|
|
|
186
|
-
Building on our overview
|
|
184
|
+
Building on our overview analysis, identify performance issues and provide optimization recommendations.
|
|
187
185
|
|
|
188
186
|
## Severity Guidelines
|
|
189
187
|
Use the following severity levels appropriately:
|
|
@@ -191,7 +189,7 @@ checks:
|
|
|
191
189
|
- **error**: Significant performance problems affecting user experience (O(n²) in critical path, N+1 queries, blocking I/O)
|
|
192
190
|
- **warning**: Performance concerns that should be optimized (inefficient algorithms, missing indexes, unnecessary operations)
|
|
193
191
|
- **info**: Performance best practices and optimization opportunities (caching suggestions, async improvements)
|
|
194
|
-
depends_on: [
|
|
192
|
+
depends_on: [overview]
|
|
195
193
|
reuse_ai_session: overview # 🔄 Reuses the overview check's AI session for context continuity
|
|
196
194
|
on: [pr_opened, pr_updated]
|
|
197
195
|
|
|
@@ -201,7 +199,7 @@ checks:
|
|
|
201
199
|
group: review
|
|
202
200
|
schema: code-review
|
|
203
201
|
prompt: |
|
|
204
|
-
Building on our overview
|
|
202
|
+
Building on our overview discussion, evaluate the code quality and maintainability.
|
|
205
203
|
|
|
206
204
|
Review the code changes shown in the `<full_diff>` or `<commit_diff>` sections, considering the files listed in `<files_summary>`.
|
|
207
205
|
|
|
@@ -235,7 +233,7 @@ checks:
|
|
|
235
233
|
- Framework/library best practices
|
|
236
234
|
- Type safety (if applicable)
|
|
237
235
|
|
|
238
|
-
Focus on actionable improvements that enhance code maintainability
|
|
236
|
+
Focus on actionable improvements that enhance code maintainability based on the overview analysis.
|
|
239
237
|
|
|
240
238
|
## Severity Guidelines
|
|
241
239
|
Use the following severity levels appropriately:
|
|
@@ -243,7 +241,7 @@ checks:
|
|
|
243
241
|
- **error**: Quality problems that significantly impact maintainability (no error handling, high complexity, severe coupling)
|
|
244
242
|
- **warning**: Quality concerns that should be addressed (missing tests, code duplication, poor naming)
|
|
245
243
|
- **info**: Best practices and improvement suggestions (refactoring opportunities, documentation improvements)
|
|
246
|
-
depends_on: [
|
|
244
|
+
depends_on: [overview]
|
|
247
245
|
reuse_ai_session: overview # 🔄 Reuses the overview check's AI session for context continuity
|
|
248
246
|
on: [pr_opened, pr_updated]
|
|
249
247
|
|
|
@@ -253,7 +251,7 @@ checks:
|
|
|
253
251
|
group: review
|
|
254
252
|
schema: code-review
|
|
255
253
|
prompt: |
|
|
256
|
-
Building on our overview
|
|
254
|
+
Building on our overview discussion, analyze the code style and formatting consistency.
|
|
257
255
|
|
|
258
256
|
Review the code changes shown in the `<full_diff>` or `<commit_diff>` sections, considering the files listed in `<files_summary>`.
|
|
259
257
|
|
|
@@ -276,7 +274,7 @@ checks:
|
|
|
276
274
|
- Documentation standards adherence
|
|
277
275
|
- Code comment quality and completeness
|
|
278
276
|
|
|
279
|
-
Focus on style improvements that enhance code readability and maintainability
|
|
277
|
+
Focus on style improvements that enhance code readability and maintainability based on the overview analysis.
|
|
280
278
|
|
|
281
279
|
## Severity Guidelines
|
|
282
280
|
Use the following severity levels appropriately:
|
|
@@ -284,135 +282,103 @@ checks:
|
|
|
284
282
|
- **error**: Major style violations that significantly harm readability (completely inconsistent formatting, misleading names)
|
|
285
283
|
- **warning**: Style inconsistencies that should be fixed (mixed conventions, unclear naming, formatting issues)
|
|
286
284
|
- **info**: Style suggestions and minor improvements (spacing, comment formatting, optional conventions)
|
|
287
|
-
depends_on: [
|
|
285
|
+
depends_on: [overview]
|
|
288
286
|
reuse_ai_session: overview # 🔄 Reuses the overview check's AI session for context continuity
|
|
289
287
|
on: [pr_opened, pr_updated]
|
|
290
288
|
|
|
291
|
-
#
|
|
292
|
-
|
|
293
|
-
type:
|
|
294
|
-
|
|
295
|
-
depends_on: [overview
|
|
296
|
-
on: [
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
289
|
+
# Apply labels based on overview tags — runs only on PR open (GitHub environments only)
|
|
290
|
+
apply-overview-labels:
|
|
291
|
+
type: github
|
|
292
|
+
tags: [github]
|
|
293
|
+
depends_on: [overview]
|
|
294
|
+
on: [pr_opened]
|
|
295
|
+
op: labels.add
|
|
296
|
+
values:
|
|
297
|
+
- "{{ outputs.overview.tags.label | default: '' | safe_label }}"
|
|
298
|
+
- "{{ outputs.overview.tags['review-effort'] | default: '' | prepend: 'review/effort:' | safe_label }}"
|
|
299
|
+
value_js: |
|
|
300
|
+
return values.filter(v => typeof v === 'string' && v.trim().length > 0);
|
|
301
|
+
|
|
302
|
+
# Issue Assistant (issues only) — triage-quality prompt from main branch, structured output
|
|
301
303
|
issue-assistant:
|
|
302
304
|
type: ai
|
|
303
|
-
group: dynamic #
|
|
305
|
+
group: dynamic # New issue triage posts a standalone comment
|
|
306
|
+
schema: issue-assistant
|
|
307
|
+
prompt: |
|
|
308
|
+
You are an intelligent GitHub issue assistant for the {{ event.repository.fullName }} repository. Your role is to provide professional, knowledgeable assistance when a NEW issue is opened.
|
|
309
|
+
|
|
310
|
+
Return ONE JSON object (no prose outside JSON) that validates the `issue-assistant` schema with:
|
|
311
|
+
- `text`: write a clear, well-structured markdown reply that welcomes the reporter, shows understanding, and provides next steps. Use sections and bullets where helpful.
|
|
312
|
+
- `intent`: must be "issue_triage" for this flow.
|
|
313
|
+
- `labels` (optional): array of labels that would help organization for this new issue.
|
|
314
|
+
|
|
315
|
+
Use this triage rubric (adopted from our main prompt):
|
|
316
|
+
1) Categorize the issue - choose from: bug, chore, documentation, enhancement, feature, question, wontfix, invalid, duplicate
|
|
317
|
+
2) Assess priority (low/medium/high/urgent)
|
|
318
|
+
3) Estimate complexity (trivial/simple/moderate/complex)
|
|
319
|
+
4) Recommend labels from the categories above
|
|
320
|
+
5) Identify potential areas affected or relevant documentation
|
|
321
|
+
6) Provide an initial response with clarifying questions if needed
|
|
322
|
+
|
|
323
|
+
Response style:
|
|
324
|
+
- Professional and welcoming
|
|
325
|
+
- Actionable guidance and clear next steps
|
|
326
|
+
- Ask clarifying questions when information is missing
|
|
327
|
+
- Use markdown formatting; include code snippets where useful
|
|
328
|
+
- NEVER make promises about timelines, release dates, or team commitments
|
|
329
|
+
- NEVER say things like "we'll pick this up", "will be included in upcoming release", or "we will post updates"
|
|
330
|
+
- Focus on technical analysis and helpful information rather than commitments
|
|
331
|
+
on: [issue_opened]
|
|
332
|
+
|
|
333
|
+
# Comment Assistant (comments only) — intent detection and reply
|
|
334
|
+
comment-assistant:
|
|
335
|
+
type: ai
|
|
336
|
+
group: dynamic
|
|
337
|
+
schema: issue-assistant
|
|
304
338
|
command: "visor"
|
|
305
|
-
if: "event.name === 'issues' && event.action === 'opened' || (event.name === 'issue_comment' && event.comment && event.comment.body && event.comment.body.trim().startsWith('/visor'))"
|
|
306
339
|
prompt: |
|
|
307
|
-
You are
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
- Impact on users/system
|
|
350
|
-
- Security implications
|
|
351
|
-
- Blocking nature
|
|
352
|
-
- Community interest
|
|
353
|
-
3. **Estimate complexity** (trivial/simple/moderate/complex)
|
|
354
|
-
4. **Suggest timeline** for resolution
|
|
355
|
-
5. **Recommend labels** that would help with organization
|
|
356
|
-
6. **Identify stakeholders** who should be involved or assignees
|
|
357
|
-
7. **Provide initial response** to the issue author
|
|
358
|
-
|
|
359
|
-
### Response Requirements
|
|
360
|
-
- Be professional and welcoming
|
|
361
|
-
- Show you understand the request
|
|
362
|
-
- Provide clear next steps
|
|
363
|
-
- Ask clarifying questions if needed
|
|
364
|
-
- Include technical insights where appropriate
|
|
365
|
-
|
|
366
|
-
{%- elsif event.name == 'issue_comment' %}
|
|
367
|
-
|
|
368
|
-
**ASSISTANCE MODE**
|
|
369
|
-
|
|
370
|
-
A user has asked a question or provided additional information. Provide helpful technical assistance:
|
|
371
|
-
|
|
372
|
-
### Original Issue
|
|
373
|
-
{%- if event.issue.title %}
|
|
374
|
-
**Title**: {{ event.issue.title }}
|
|
375
|
-
{%- endif %}
|
|
376
|
-
{%- if event.issue.body %}
|
|
377
|
-
**Description**: {{ event.issue.body }}
|
|
378
|
-
{%- endif %}
|
|
379
|
-
|
|
380
|
-
### Latest Comment
|
|
381
|
-
{{ event.comment.body }}
|
|
382
|
-
|
|
383
|
-
### Analysis Tasks
|
|
384
|
-
1. **Understand the context** of their question/comment
|
|
385
|
-
2. **Provide technical guidance** based on project knowledge
|
|
386
|
-
3. **Reference relevant code/files** if applicable
|
|
387
|
-
4. **Suggest implementation approaches** for feature requests
|
|
388
|
-
5. **Provide debugging steps** for bug reports
|
|
389
|
-
6. **Link to documentation** or similar issues if helpful
|
|
390
|
-
7. **Offer code examples** when appropriate
|
|
391
|
-
|
|
392
|
-
### Response Requirements
|
|
393
|
-
- Address their specific question directly
|
|
394
|
-
- Provide actionable guidance
|
|
395
|
-
- Be encouraging and supportive
|
|
396
|
-
- Use technical language appropriate to their level
|
|
397
|
-
- Include code examples where helpful
|
|
398
|
-
- Reference project conventions and patterns
|
|
399
|
-
|
|
400
|
-
{%- endif %}
|
|
401
|
-
|
|
402
|
-
### Special Instructions
|
|
403
|
-
- Always be professional, helpful, and encouraging
|
|
404
|
-
- Focus on actionable advice and clear next steps
|
|
405
|
-
- Use markdown formatting for better readability
|
|
406
|
-
- Include relevant code examples when helpful
|
|
407
|
-
- Reference project context and patterns when applicable
|
|
408
|
-
- If dealing with `/visor` commands in comments, acknowledge and provide assistance
|
|
409
|
-
- Maintain consistency with project tone and contributor guidelines
|
|
410
|
-
|
|
411
|
-
### Response Format
|
|
412
|
-
Provide a well-structured markdown response with clear sections and helpful guidance.
|
|
413
|
-
on: [issue_opened, issue_comment]
|
|
414
|
-
|
|
415
|
-
# Output configuration
|
|
340
|
+
You are the GitHub comment assistant for {{ event.repository.fullName }}. Respond to user comments on issues or PR discussion threads.
|
|
341
|
+
|
|
342
|
+
Return ONE JSON object (no prose outside JSON) that validates the `issue-assistant` schema with:
|
|
343
|
+
- `text`: a concise, helpful markdown reply to the latest comment.
|
|
344
|
+
- `intent`: choose one: "comment_reply" (normal reply) or "comment_retrigger" (pick this ONLY when the user explicitly asks to re-run checks OR explicitly asks to disable some checks).
|
|
345
|
+
- `labels`: omit for comments (do not include).
|
|
346
|
+
|
|
347
|
+
Rules:
|
|
348
|
+
- Never suggest rerun/disable unless asked explicitly.
|
|
349
|
+
- If asked to disable any check(s), set `intent` = "comment_retrigger" and in `text` acknowledge the request and say the checks will be re-run; DO NOT propose slash/directive comments.
|
|
350
|
+
- Stay technical, direct, and specific; add code snippets or links when helpful.
|
|
351
|
+
on: [issue_comment]
|
|
352
|
+
on_success:
|
|
353
|
+
goto_js: |
|
|
354
|
+
const intent = (typeof output === 'object' && output) ? output.intent : undefined;
|
|
355
|
+
const isComment = (event && event.name) ? (event.name == 'issue_comment') : true;
|
|
356
|
+
const allowed = typeof hasMinPermission === 'function' ? hasMinPermission('MEMBER') : true;
|
|
357
|
+
return (isComment && allowed && intent === 'comment_retrigger') ? 'overview' : null
|
|
358
|
+
goto_event: pr_updated
|
|
359
|
+
|
|
360
|
+
# Apply labels to new issues based on assistant output (GitHub-only)
|
|
361
|
+
apply-issue-labels:
|
|
362
|
+
type: github
|
|
363
|
+
tags: [github]
|
|
364
|
+
depends_on: [issue-assistant]
|
|
365
|
+
on: [issue_opened]
|
|
366
|
+
op: labels.add
|
|
367
|
+
values:
|
|
368
|
+
- "{{ outputs['issue-assistant'].labels | safe_label_list }}"
|
|
369
|
+
|
|
370
|
+
# External origin labelling for PRs and Issues
|
|
371
|
+
external-label:
|
|
372
|
+
type: github
|
|
373
|
+
tags: [github]
|
|
374
|
+
on: [pr_opened, issue_opened]
|
|
375
|
+
if: "!isMember() && !isContributor()"
|
|
376
|
+
op: labels.add
|
|
377
|
+
values:
|
|
378
|
+
- "external"
|
|
379
|
+
|
|
380
|
+
# Retrigger noop removed — comment-assistant schedules overview directly
|
|
381
|
+
|
|
416
382
|
output:
|
|
417
383
|
pr_comment:
|
|
418
384
|
format: markdown
|
|
@@ -16,7 +16,7 @@ export declare class FailureConditionEvaluator {
|
|
|
16
16
|
/**
|
|
17
17
|
* Evaluate simple fail_if condition
|
|
18
18
|
*/
|
|
19
|
-
evaluateSimpleCondition(checkName: string, checkSchema: string, checkGroup: string, reviewSummary: ReviewSummary, expression: string, previousOutputs?: Record<string, ReviewSummary
|
|
19
|
+
evaluateSimpleCondition(checkName: string, checkSchema: string, checkGroup: string, reviewSummary: ReviewSummary, expression: string, previousOutputs?: Record<string, ReviewSummary>, authorAssociation?: string): Promise<boolean>;
|
|
20
20
|
/**
|
|
21
21
|
* Determine if the event is related to pull requests
|
|
22
22
|
*/
|
|
@@ -35,11 +35,12 @@ export declare class FailureConditionEvaluator {
|
|
|
35
35
|
event?: string;
|
|
36
36
|
environment?: Record<string, string>;
|
|
37
37
|
previousResults?: Map<string, ReviewSummary>;
|
|
38
|
+
authorAssociation?: string;
|
|
38
39
|
}): Promise<boolean>;
|
|
39
40
|
/**
|
|
40
41
|
* Evaluate all failure conditions for a check result
|
|
41
42
|
*/
|
|
42
|
-
evaluateConditions(checkName: string, checkSchema: string, checkGroup: string, reviewSummary: ReviewSummary, globalConditions?: FailureConditions, checkConditions?: FailureConditions, previousOutputs?: Record<string, ReviewSummary
|
|
43
|
+
evaluateConditions(checkName: string, checkSchema: string, checkGroup: string, reviewSummary: ReviewSummary, globalConditions?: FailureConditions, checkConditions?: FailureConditions, previousOutputs?: Record<string, ReviewSummary>, authorAssociation?: string): Promise<FailureConditionResult[]>;
|
|
43
44
|
/**
|
|
44
45
|
* Evaluate a set of failure conditions
|
|
45
46
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/failure-condition-evaluator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/failure-condition-evaluator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EACL,iBAAiB,EAGjB,sBAAsB,EAEvB,MAAM,gBAAgB,CAAC;AAKxB;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAU;;IAI1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA6D3B;;OAEG;IACG,uBAAuB,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,OAAO,CAAC;IA2DnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GACA,OAAO,CAAC,OAAO,CAAC;IAoEnB;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,CAAC,EAAE,iBAAiB,EACpC,eAAe,CAAC,EAAE,iBAAiB,EACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IA4CpC;;OAEG;YACW,oBAAoB;IA0ElC;;OAEG;YACW,uBAAuB;IA0BrC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAiO1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkK9B,OAAO,CAAC,qBAAqB;IAmB7B;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,OAAO;IAItE;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,sBAAsB,EAAE;IAIvF;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG;QAChE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QAChC,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAClC,IAAI,EAAE,sBAAsB,EAAE,CAAC;KAChC;IASD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,MAAM;CAiChE"}
|
|
@@ -32,6 +32,10 @@ export declare const configSchema: {
|
|
|
32
32
|
readonly $ref: "#/definitions/HttpServerConfig";
|
|
33
33
|
readonly description: "HTTP server configuration for receiving webhooks";
|
|
34
34
|
};
|
|
35
|
+
readonly memory: {
|
|
36
|
+
readonly $ref: "#/definitions/MemoryConfig";
|
|
37
|
+
readonly description: "Memory storage configuration";
|
|
38
|
+
};
|
|
35
39
|
readonly env: {
|
|
36
40
|
readonly $ref: "#/definitions/EnvConfig";
|
|
37
41
|
readonly description: "Global environment variables";
|
|
@@ -275,6 +279,45 @@ export declare const configSchema: {
|
|
|
275
279
|
readonly type: "boolean";
|
|
276
280
|
readonly description: "Include execution metadata in log output";
|
|
277
281
|
};
|
|
282
|
+
readonly operation: {
|
|
283
|
+
readonly type: "string";
|
|
284
|
+
readonly enum: readonly ["get", "set", "append", "increment", "delete", "clear", "list", "exec_js"];
|
|
285
|
+
readonly description: "Memory operation to perform";
|
|
286
|
+
};
|
|
287
|
+
readonly key: {
|
|
288
|
+
readonly type: "string";
|
|
289
|
+
readonly description: "Key for memory operation";
|
|
290
|
+
};
|
|
291
|
+
readonly value: {
|
|
292
|
+
readonly description: "Value for set/append operations";
|
|
293
|
+
};
|
|
294
|
+
readonly value_js: {
|
|
295
|
+
readonly type: "string";
|
|
296
|
+
readonly description: "JavaScript expression to compute value dynamically";
|
|
297
|
+
};
|
|
298
|
+
readonly memory_js: {
|
|
299
|
+
readonly type: "string";
|
|
300
|
+
readonly description: "JavaScript code for exec_js operation with full memory access";
|
|
301
|
+
};
|
|
302
|
+
readonly namespace: {
|
|
303
|
+
readonly type: "string";
|
|
304
|
+
readonly description: "Override namespace for this check";
|
|
305
|
+
};
|
|
306
|
+
readonly op: {
|
|
307
|
+
readonly type: "string";
|
|
308
|
+
readonly description: "GitHub operation to perform (e.g., 'labels.add', 'labels.remove', 'comment.create')";
|
|
309
|
+
};
|
|
310
|
+
readonly values: {
|
|
311
|
+
readonly anyOf: readonly [{
|
|
312
|
+
readonly type: "array";
|
|
313
|
+
readonly items: {
|
|
314
|
+
readonly type: "string";
|
|
315
|
+
};
|
|
316
|
+
}, {
|
|
317
|
+
readonly type: "string";
|
|
318
|
+
}];
|
|
319
|
+
readonly description: "Values for GitHub operations (can be array or single value)";
|
|
320
|
+
};
|
|
278
321
|
};
|
|
279
322
|
readonly additionalProperties: false;
|
|
280
323
|
readonly description: "Configuration for a single check";
|
|
@@ -284,7 +327,7 @@ export declare const configSchema: {
|
|
|
284
327
|
};
|
|
285
328
|
readonly ConfigCheckType: {
|
|
286
329
|
readonly type: "string";
|
|
287
|
-
readonly enum: readonly ["ai", "command", "http", "http_input", "http_client", "noop", "log", "claude-code"];
|
|
330
|
+
readonly enum: readonly ["ai", "command", "http", "http_input", "http_client", "noop", "log", "memory", "github", "claude-code"];
|
|
288
331
|
readonly description: "Valid check types in configuration";
|
|
289
332
|
};
|
|
290
333
|
readonly 'Record<string,string>': {
|
|
@@ -518,6 +561,10 @@ export declare const configSchema: {
|
|
|
518
561
|
readonly type: "string";
|
|
519
562
|
readonly description: "Jump back to an ancestor step (by id)";
|
|
520
563
|
};
|
|
564
|
+
readonly goto_event: {
|
|
565
|
+
readonly $ref: "#/definitions/EventTrigger";
|
|
566
|
+
readonly description: "Simulate a different event when performing goto (e.g., 'pr_updated')";
|
|
567
|
+
};
|
|
521
568
|
readonly goto_js: {
|
|
522
569
|
readonly type: "string";
|
|
523
570
|
readonly description: "Dynamic goto: JS expression returning step id or null";
|
|
@@ -584,6 +631,10 @@ export declare const configSchema: {
|
|
|
584
631
|
readonly type: "string";
|
|
585
632
|
readonly description: "Optional jump back to ancestor step (by id)";
|
|
586
633
|
};
|
|
634
|
+
readonly goto_event: {
|
|
635
|
+
readonly $ref: "#/definitions/EventTrigger";
|
|
636
|
+
readonly description: "Simulate a different event when performing goto (e.g., 'pr_updated')";
|
|
637
|
+
};
|
|
587
638
|
readonly goto_js: {
|
|
588
639
|
readonly type: "string";
|
|
589
640
|
readonly description: "Dynamic goto: JS expression returning step id or null";
|
|
@@ -660,7 +711,7 @@ export declare const configSchema: {
|
|
|
660
711
|
};
|
|
661
712
|
readonly GroupByOption: {
|
|
662
713
|
readonly type: "string";
|
|
663
|
-
readonly enum: readonly ["check", "file", "severity"];
|
|
714
|
+
readonly enum: readonly ["check", "file", "severity", "group"];
|
|
664
715
|
readonly description: "Valid grouping options";
|
|
665
716
|
};
|
|
666
717
|
readonly DebugConfig: {
|
|
@@ -856,6 +907,42 @@ export declare const configSchema: {
|
|
|
856
907
|
readonly '^x-': {};
|
|
857
908
|
};
|
|
858
909
|
};
|
|
910
|
+
readonly MemoryConfig: {
|
|
911
|
+
readonly type: "object";
|
|
912
|
+
readonly properties: {
|
|
913
|
+
readonly storage: {
|
|
914
|
+
readonly type: "string";
|
|
915
|
+
readonly enum: readonly ["memory", "file"];
|
|
916
|
+
readonly description: "Storage mode: \"memory\" (in-memory, default) or \"file\" (persistent)";
|
|
917
|
+
};
|
|
918
|
+
readonly format: {
|
|
919
|
+
readonly type: "string";
|
|
920
|
+
readonly enum: readonly ["json", "csv"];
|
|
921
|
+
readonly description: "Storage format (only for file storage, default: json)";
|
|
922
|
+
};
|
|
923
|
+
readonly file: {
|
|
924
|
+
readonly type: "string";
|
|
925
|
+
readonly description: "File path (required if storage: file)";
|
|
926
|
+
};
|
|
927
|
+
readonly namespace: {
|
|
928
|
+
readonly type: "string";
|
|
929
|
+
readonly description: "Default namespace (default: \"default\")";
|
|
930
|
+
};
|
|
931
|
+
readonly auto_load: {
|
|
932
|
+
readonly type: "boolean";
|
|
933
|
+
readonly description: "Auto-load on startup (default: true if storage: file)";
|
|
934
|
+
};
|
|
935
|
+
readonly auto_save: {
|
|
936
|
+
readonly type: "boolean";
|
|
937
|
+
readonly description: "Auto-save after operations (default: true if storage: file)";
|
|
938
|
+
};
|
|
939
|
+
};
|
|
940
|
+
readonly additionalProperties: false;
|
|
941
|
+
readonly description: "Memory storage configuration";
|
|
942
|
+
readonly patternProperties: {
|
|
943
|
+
readonly '^x-': {};
|
|
944
|
+
};
|
|
945
|
+
};
|
|
859
946
|
readonly TagFilter: {
|
|
860
947
|
readonly type: "object";
|
|
861
948
|
readonly properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/generated/config-schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/generated/config-schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4hCf,CAAC;AACX,eAAe,YAAY,CAAC"}
|