helloloop 0.3.1 → 0.6.1
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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +3 -3
- package/README.md +157 -81
- package/hosts/claude/marketplace/plugins/helloloop/.claude-plugin/plugin.json +1 -1
- package/hosts/claude/marketplace/plugins/helloloop/commands/helloloop.md +13 -10
- package/hosts/claude/marketplace/plugins/helloloop/skills/helloloop/SKILL.md +9 -4
- package/hosts/gemini/extension/GEMINI.md +12 -7
- package/hosts/gemini/extension/commands/helloloop.toml +14 -10
- package/hosts/gemini/extension/gemini-extension.json +1 -1
- package/package.json +2 -2
- package/skills/helloloop/SKILL.md +16 -6
- package/src/analyze_confirmation.mjs +29 -5
- package/src/analyze_prompt.mjs +5 -1
- package/src/analyze_user_input.mjs +20 -2
- package/src/analyzer.mjs +130 -43
- package/src/cli.mjs +32 -492
- package/src/cli_analyze_command.mjs +248 -0
- package/src/cli_args.mjs +106 -0
- package/src/cli_command_handlers.mjs +120 -0
- package/src/cli_context.mjs +31 -0
- package/src/cli_render.mjs +70 -0
- package/src/cli_support.mjs +11 -14
- package/src/completion_review.mjs +243 -0
- package/src/config.mjs +50 -0
- package/src/discovery_prompt.mjs +2 -27
- package/src/engine_metadata.mjs +79 -0
- package/src/engine_selection.mjs +335 -0
- package/src/engine_selection_failure.mjs +51 -0
- package/src/engine_selection_messages.mjs +119 -0
- package/src/engine_selection_probe.mjs +78 -0
- package/src/engine_selection_prompt.mjs +48 -0
- package/src/engine_selection_settings.mjs +38 -0
- package/src/guardrails.mjs +15 -4
- package/src/install.mjs +6 -405
- package/src/install_claude.mjs +189 -0
- package/src/install_codex.mjs +114 -0
- package/src/install_gemini.mjs +43 -0
- package/src/install_shared.mjs +90 -0
- package/src/process.mjs +482 -39
- package/src/prompt.mjs +9 -5
- package/src/prompt_session.mjs +40 -0
- package/src/runner.mjs +3 -341
- package/src/runner_execute_task.mjs +301 -0
- package/src/runner_execution_support.mjs +155 -0
- package/src/runner_loop.mjs +106 -0
- package/src/runner_once.mjs +29 -0
- package/src/runner_status.mjs +104 -0
- package/src/runtime_recovery.mjs +301 -0
- package/src/shell_invocation.mjs +16 -0
- package/templates/analysis-output.schema.json +0 -1
- package/templates/policy.template.json +27 -0
- package/templates/project.template.json +2 -0
- package/templates/task-review-output.schema.json +70 -0
package/src/shell_invocation.mjs
CHANGED
|
@@ -223,3 +223,19 @@ export function resolveCodexInvocation(options = {}) {
|
|
|
223
223
|
toolDisplayName: "Codex",
|
|
224
224
|
});
|
|
225
225
|
}
|
|
226
|
+
|
|
227
|
+
export function resolveClaudeInvocation(options = {}) {
|
|
228
|
+
return resolveCliInvocation({
|
|
229
|
+
...options,
|
|
230
|
+
commandName: "claude",
|
|
231
|
+
toolDisplayName: "Claude",
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
export function resolveGeminiInvocation(options = {}) {
|
|
236
|
+
return resolveCliInvocation({
|
|
237
|
+
...options,
|
|
238
|
+
commandName: "gemini",
|
|
239
|
+
toolDisplayName: "Gemini",
|
|
240
|
+
});
|
|
241
|
+
}
|
|
@@ -4,13 +4,40 @@
|
|
|
4
4
|
"maxLoopTasks": 4,
|
|
5
5
|
"maxTaskAttempts": 2,
|
|
6
6
|
"maxTaskStrategies": 4,
|
|
7
|
+
"maxReanalysisPasses": 3,
|
|
7
8
|
"stopOnFailure": false,
|
|
8
9
|
"stopOnHighRisk": true,
|
|
10
|
+
"runtimeRecovery": {
|
|
11
|
+
"enabled": true,
|
|
12
|
+
"allowEngineSwitch": false,
|
|
13
|
+
"heartbeatIntervalSeconds": 60,
|
|
14
|
+
"stallWarningSeconds": 900,
|
|
15
|
+
"maxIdleSeconds": 2700,
|
|
16
|
+
"killGraceSeconds": 10,
|
|
17
|
+
"maxPhaseRecoveries": 4,
|
|
18
|
+
"retryDelaysSeconds": [120, 300, 900, 1800],
|
|
19
|
+
"retryOnUnknownFailure": true,
|
|
20
|
+
"maxUnknownRecoveries": 1
|
|
21
|
+
},
|
|
9
22
|
"codex": {
|
|
10
23
|
"model": "",
|
|
11
24
|
"executable": "",
|
|
12
25
|
"sandbox": "workspace-write",
|
|
13
26
|
"dangerouslyBypassSandbox": false,
|
|
14
27
|
"jsonOutput": true
|
|
28
|
+
},
|
|
29
|
+
"claude": {
|
|
30
|
+
"model": "",
|
|
31
|
+
"executable": "",
|
|
32
|
+
"permissionMode": "bypassPermissions",
|
|
33
|
+
"analysisPermissionMode": "plan",
|
|
34
|
+
"outputFormat": "text"
|
|
35
|
+
},
|
|
36
|
+
"gemini": {
|
|
37
|
+
"model": "",
|
|
38
|
+
"executable": "",
|
|
39
|
+
"approvalMode": "yolo",
|
|
40
|
+
"analysisApprovalMode": "plan",
|
|
41
|
+
"outputFormat": "text"
|
|
15
42
|
}
|
|
16
43
|
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": [
|
|
6
|
+
"verdict",
|
|
7
|
+
"summary",
|
|
8
|
+
"acceptanceChecks",
|
|
9
|
+
"missing",
|
|
10
|
+
"nextAction"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"verdict": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"enum": [
|
|
16
|
+
"complete",
|
|
17
|
+
"incomplete",
|
|
18
|
+
"blocked"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"summary": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"minLength": 1
|
|
24
|
+
},
|
|
25
|
+
"acceptanceChecks": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"minItems": 1,
|
|
28
|
+
"items": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"required": [
|
|
32
|
+
"item",
|
|
33
|
+
"status",
|
|
34
|
+
"evidence"
|
|
35
|
+
],
|
|
36
|
+
"properties": {
|
|
37
|
+
"item": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"minLength": 1
|
|
40
|
+
},
|
|
41
|
+
"status": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"enum": [
|
|
44
|
+
"met",
|
|
45
|
+
"not_met",
|
|
46
|
+
"uncertain"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
"evidence": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"minLength": 1
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"missing": {
|
|
57
|
+
"type": "array",
|
|
58
|
+
"items": {
|
|
59
|
+
"type": "string"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"blockerReason": {
|
|
63
|
+
"type": "string"
|
|
64
|
+
},
|
|
65
|
+
"nextAction": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"minLength": 1
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|