@hoplogic/hopjit 0.1.0
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/LICENSE +21 -0
- package/README.md +99 -0
- package/dist/act-body-interpreter.d.ts +24 -0
- package/dist/act-body-interpreter.js +159 -0
- package/dist/act-body-parser.d.ts +10 -0
- package/dist/act-body-parser.js +577 -0
- package/dist/act-builtins.d.ts +12 -0
- package/dist/act-builtins.js +104 -0
- package/dist/ast-helpers.d.ts +26 -0
- package/dist/ast-helpers.js +58 -0
- package/dist/ast-runtime.d.ts +49 -0
- package/dist/ast-runtime.js +224 -0
- package/dist/ast-types.d.ts +260 -0
- package/dist/ast-types.js +4 -0
- package/dist/cli-types.d.ts +190 -0
- package/dist/cli-types.js +4 -0
- package/dist/cli.d.ts +26 -0
- package/dist/cli.js +623 -0
- package/dist/dispatcher.d.ts +92 -0
- package/dist/dispatcher.js +692 -0
- package/dist/doc-ref.d.ts +41 -0
- package/dist/doc-ref.js +214 -0
- package/dist/engine-traverse.d.ts +37 -0
- package/dist/engine-traverse.js +385 -0
- package/dist/engine.d.ts +141 -0
- package/dist/engine.js +1792 -0
- package/dist/errors.d.ts +47 -0
- package/dist/errors.js +34 -0
- package/dist/hoplog.d.ts +120 -0
- package/dist/hoplog.js +501 -0
- package/dist/parser.d.ts +7 -0
- package/dist/parser.js +802 -0
- package/dist/persistence.d.ts +60 -0
- package/dist/persistence.js +208 -0
- package/dist/prompt.d.ts +130 -0
- package/dist/prompt.js +1014 -0
- package/dist/provider-types.d.ts +134 -0
- package/dist/provider-types.js +3 -0
- package/dist/runtime-types.d.ts +84 -0
- package/dist/runtime-types.js +4 -0
- package/dist/tools.d.ts +16 -0
- package/dist/tools.js +141 -0
- package/dist/validator.d.ts +23 -0
- package/dist/validator.js +959 -0
- package/driver/codex/AGENTS.md +54 -0
- package/driver/hopskill-build/SKILL.md +137 -0
- package/driver/hopskill-build/references/spec-skeleton.md +132 -0
- package/driver/hopskill-build/references/step-type-cheatsheet.md +56 -0
- package/driver/hopskill-build/references/three-focus-rules.md +148 -0
- package/driver/hopspec-skill.md +187 -0
- package/driver/references/cli-discovery.md +36 -0
- package/driver/references/discovery.md +45 -0
- package/driver/references/driver-subagent.md +50 -0
- package/driver/references/parallel-worker.md +50 -0
- package/driver/references/step-execution-rules.md +47 -0
- package/package.json +52 -0
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare enum ErrorCode {
|
|
2
|
+
INVALID_STEP_ID = "INVALID_STEP_ID",
|
|
3
|
+
INVALID_STATE = "INVALID_STATE",
|
|
4
|
+
SCHEMA_MISMATCH = "SCHEMA_MISMATCH",
|
|
5
|
+
DEPTH_EXCEEDED = "DEPTH_EXCEEDED",
|
|
6
|
+
CYCLE_DETECTED = "CYCLE_DETECTED",
|
|
7
|
+
AUTH_FAILURE = "AUTH_FAILURE",
|
|
8
|
+
CONTEXT_OVERFLOW = "CONTEXT_OVERFLOW",
|
|
9
|
+
MISSING_INPUT = "MISSING_INPUT",
|
|
10
|
+
MAX_TOOL_ITERATIONS = "MAX_TOOL_ITERATIONS",
|
|
11
|
+
BUDGET_EXCEEDED = "BUDGET_EXCEEDED",
|
|
12
|
+
COMMIT_REQUIRED = "COMMIT_REQUIRED",
|
|
13
|
+
STEP_TIMEOUT = "STEP_TIMEOUT",
|
|
14
|
+
CORRUPT_STATE_FILE = "CORRUPT_STATE_FILE",// 状态文件损坏/版本不符(join 读子实例时校验)// @a: anc-exec-parallel-join-preconditions
|
|
15
|
+
REPLAN_LIMIT_EXCEEDED = "REPLAN_LIMIT_EXCEEDED",
|
|
16
|
+
REPLAN_DUPLICATE = "REPLAN_DUPLICATE",
|
|
17
|
+
PARSE_ERROR = "PARSE_ERROR",
|
|
18
|
+
VALIDATION_ERROR = "VALIDATION_ERROR",
|
|
19
|
+
IO_ERROR = "IO_ERROR",
|
|
20
|
+
RATE_LIMITED = "RATE_LIMITED",
|
|
21
|
+
API_TIMEOUT = "API_TIMEOUT",
|
|
22
|
+
API_NETWORK_ERROR = "API_NETWORK_ERROR",
|
|
23
|
+
API_SERVER_ERROR = "API_SERVER_ERROR",
|
|
24
|
+
TOOL_TIMEOUT = "TOOL_TIMEOUT",
|
|
25
|
+
TOOL_EXEC_ERROR = "TOOL_EXEC_ERROR",
|
|
26
|
+
ALREADY_DONE = "ALREADY_DONE",
|
|
27
|
+
ALREADY_FAILED = "ALREADY_FAILED"
|
|
28
|
+
}
|
|
29
|
+
/** Spec 错误联合类型——parser/validator 产出,覆盖解析与校验两类失败。见 [[shared-errors#^anc-error-spec-error]]。 */
|
|
30
|
+
export type SpecError = ParseError | ValidationError;
|
|
31
|
+
/** 解析错误——parser 在 markdown → AST 阶段产出,带行号定位。见 [[shared-errors#^anc-error-spec-error]]。 */
|
|
32
|
+
export interface ParseError {
|
|
33
|
+
kind: 'parse';
|
|
34
|
+
line: number;
|
|
35
|
+
message: string;
|
|
36
|
+
}
|
|
37
|
+
/** 校验违规严重度——error 阻塞执行、warn 仅建议修复。见 [[shared-errors#^anc-error-types]]。 */
|
|
38
|
+
export type ValidationSeverity = 'error' | 'warn';
|
|
39
|
+
/** 校验错误——validator 产出、engine 消费,带规则 ID 与严重度定位违规。见 [[shared-errors#^anc-error-spec-error]]。 */
|
|
40
|
+
export interface ValidationError {
|
|
41
|
+
kind: 'validate';
|
|
42
|
+
rule: string;
|
|
43
|
+
severity: ValidationSeverity;
|
|
44
|
+
step_id?: string;
|
|
45
|
+
line?: number;
|
|
46
|
+
message: string;
|
|
47
|
+
}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// @module: shared-errors ^anc-error-error-code — 错误码与错误类型契约。中稳:新增错误码向后兼容,删/改语义破坏。
|
|
2
|
+
// 拆自原 types.ts(见 design/spec-ast.md ^anc-struct-spec-ast 拆分表)。
|
|
3
|
+
export var ErrorCode;
|
|
4
|
+
(function (ErrorCode) {
|
|
5
|
+
// Fatal (non-retryable)
|
|
6
|
+
ErrorCode["INVALID_STEP_ID"] = "INVALID_STEP_ID";
|
|
7
|
+
ErrorCode["INVALID_STATE"] = "INVALID_STATE";
|
|
8
|
+
ErrorCode["SCHEMA_MISMATCH"] = "SCHEMA_MISMATCH";
|
|
9
|
+
ErrorCode["DEPTH_EXCEEDED"] = "DEPTH_EXCEEDED";
|
|
10
|
+
ErrorCode["CYCLE_DETECTED"] = "CYCLE_DETECTED";
|
|
11
|
+
ErrorCode["AUTH_FAILURE"] = "AUTH_FAILURE";
|
|
12
|
+
ErrorCode["CONTEXT_OVERFLOW"] = "CONTEXT_OVERFLOW";
|
|
13
|
+
ErrorCode["MISSING_INPUT"] = "MISSING_INPUT";
|
|
14
|
+
ErrorCode["MAX_TOOL_ITERATIONS"] = "MAX_TOOL_ITERATIONS";
|
|
15
|
+
ErrorCode["BUDGET_EXCEEDED"] = "BUDGET_EXCEEDED";
|
|
16
|
+
ErrorCode["COMMIT_REQUIRED"] = "COMMIT_REQUIRED";
|
|
17
|
+
ErrorCode["STEP_TIMEOUT"] = "STEP_TIMEOUT";
|
|
18
|
+
ErrorCode["CORRUPT_STATE_FILE"] = "CORRUPT_STATE_FILE";
|
|
19
|
+
ErrorCode["REPLAN_LIMIT_EXCEEDED"] = "REPLAN_LIMIT_EXCEEDED";
|
|
20
|
+
ErrorCode["REPLAN_DUPLICATE"] = "REPLAN_DUPLICATE";
|
|
21
|
+
// Retryable
|
|
22
|
+
ErrorCode["PARSE_ERROR"] = "PARSE_ERROR";
|
|
23
|
+
ErrorCode["VALIDATION_ERROR"] = "VALIDATION_ERROR";
|
|
24
|
+
ErrorCode["IO_ERROR"] = "IO_ERROR";
|
|
25
|
+
ErrorCode["RATE_LIMITED"] = "RATE_LIMITED";
|
|
26
|
+
ErrorCode["API_TIMEOUT"] = "API_TIMEOUT";
|
|
27
|
+
ErrorCode["API_NETWORK_ERROR"] = "API_NETWORK_ERROR";
|
|
28
|
+
ErrorCode["API_SERVER_ERROR"] = "API_SERVER_ERROR";
|
|
29
|
+
ErrorCode["TOOL_TIMEOUT"] = "TOOL_TIMEOUT";
|
|
30
|
+
ErrorCode["TOOL_EXEC_ERROR"] = "TOOL_EXEC_ERROR";
|
|
31
|
+
// Idempotent hits
|
|
32
|
+
ErrorCode["ALREADY_DONE"] = "ALREADY_DONE";
|
|
33
|
+
ErrorCode["ALREADY_FAILED"] = "ALREADY_FAILED";
|
|
34
|
+
})(ErrorCode || (ErrorCode = {}));
|
package/dist/hoplog.d.ts
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
export type LogLevel = 'debug' | 'info' | 'warn';
|
|
2
|
+
export interface ToolCallRecord {
|
|
3
|
+
name: string;
|
|
4
|
+
result: 'success' | 'failure';
|
|
5
|
+
at: string;
|
|
6
|
+
}
|
|
7
|
+
/** commit 步骤的审计字段:不可逆操作的目标、授权来源、结果、时间——审计性字段,无视日志级别始终记录。见 [[spec-observability#^anc-obs-audit]] */
|
|
8
|
+
export interface CommitAuditRecord {
|
|
9
|
+
target?: string;
|
|
10
|
+
authorized_by: 'human' | 'caller' | 'policy' | 'none';
|
|
11
|
+
result: 'success' | 'failure';
|
|
12
|
+
at: string;
|
|
13
|
+
}
|
|
14
|
+
/** confirm 步骤的 HITL 记录:人的决策、决策者、结构化选项——审计性字段,任何级别都写入。见 [[spec-observability#^anc-obs-hitl-record]] */
|
|
15
|
+
export interface HitlRecord {
|
|
16
|
+
response?: string;
|
|
17
|
+
responder?: 'human' | 'caller';
|
|
18
|
+
options?: string[];
|
|
19
|
+
at?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ReplanAuditRecord {
|
|
22
|
+
spec_id: string;
|
|
23
|
+
step_id: string;
|
|
24
|
+
error_reason: string;
|
|
25
|
+
generated_children: Array<{
|
|
26
|
+
step_id: string;
|
|
27
|
+
step_type: string;
|
|
28
|
+
summary: string;
|
|
29
|
+
outputs: string[];
|
|
30
|
+
}>;
|
|
31
|
+
base: 'scratch' | 'fallback';
|
|
32
|
+
at: string;
|
|
33
|
+
}
|
|
34
|
+
export interface StepMeta {
|
|
35
|
+
tool?: ToolCallRecord[];
|
|
36
|
+
commit_audit?: CommitAuditRecord;
|
|
37
|
+
hitl?: HitlRecord;
|
|
38
|
+
callee_spec_id?: string;
|
|
39
|
+
knowledge?: Array<{
|
|
40
|
+
source_id: string;
|
|
41
|
+
at: string;
|
|
42
|
+
}>;
|
|
43
|
+
doc_refs?: Array<{
|
|
44
|
+
source_id: string;
|
|
45
|
+
at: string;
|
|
46
|
+
}>;
|
|
47
|
+
retry?: {
|
|
48
|
+
attempt: number;
|
|
49
|
+
max: number;
|
|
50
|
+
};
|
|
51
|
+
taken?: string;
|
|
52
|
+
condition?: string;
|
|
53
|
+
llm?: {
|
|
54
|
+
model?: string;
|
|
55
|
+
input_tokens?: number;
|
|
56
|
+
output_tokens?: number;
|
|
57
|
+
};
|
|
58
|
+
tokens_used?: number;
|
|
59
|
+
}
|
|
60
|
+
/** HopLog 构造选项:spec_id、日志目录、最低记录级别等——决定 run 目录命名与级别裁剪深度。见 [[spec-observability#^anc-obs-file-layout]] */
|
|
61
|
+
export interface HopLogOptions {
|
|
62
|
+
specId: string;
|
|
63
|
+
logDir: string;
|
|
64
|
+
level?: LogLevel;
|
|
65
|
+
title: string;
|
|
66
|
+
goal: string;
|
|
67
|
+
inputs?: Record<string, unknown>;
|
|
68
|
+
traceId?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* HopLog 执行轨迹日志——唯一信息源是 main.yaml 文件本身。
|
|
72
|
+
* 每个 record* 方法实时 appendFileSync,无内存镜像(查询已记录内容请读文件)。
|
|
73
|
+
*/
|
|
74
|
+
export declare class HopLog {
|
|
75
|
+
private level;
|
|
76
|
+
private runDir;
|
|
77
|
+
private filePath;
|
|
78
|
+
private startedSteps;
|
|
79
|
+
private pendingResume;
|
|
80
|
+
private iterCounts;
|
|
81
|
+
private doneSteps;
|
|
82
|
+
private resumedWritten;
|
|
83
|
+
constructor(options: HopLogOptions);
|
|
84
|
+
static resume(runDir: string, level?: LogLevel): HopLog;
|
|
85
|
+
private flushTopLevelResume;
|
|
86
|
+
private stepDepth;
|
|
87
|
+
private ind;
|
|
88
|
+
private hoplogKey;
|
|
89
|
+
private blockHeader;
|
|
90
|
+
recordStepStart(stepId: string, type: string, summary: string, inputs?: Record<string, unknown>, promptText?: string): void;
|
|
91
|
+
private emitResumed;
|
|
92
|
+
private guardOrphan;
|
|
93
|
+
recordStepDone(stepId: string, outputs?: Record<string, unknown>): void;
|
|
94
|
+
recordStepFailed(stepId: string, reason: string, failKind?: string): void;
|
|
95
|
+
/**
|
|
96
|
+
* 记录步骤特有字段。审计性字段(tool/commit_audit/hitl/callee_spec_id)
|
|
97
|
+
* 无视日志级别始终写入;流控轨迹字段(knowledge/retry/taken/condition/llm/tokens_used)info 级写入。
|
|
98
|
+
*/
|
|
99
|
+
recordStepMeta(stepId: string, meta: StepMeta): void;
|
|
100
|
+
recordWarn(stepId: string, message: string): void;
|
|
101
|
+
recordParallelFanout(parallelStepId: string, childIds: string[], maxConcurrent: number): void;
|
|
102
|
+
recordParallelDispatch(parallelStepId: string, childId: string, logDir: string): void;
|
|
103
|
+
recordParallelJoin(parallelStepId: string, childResults: Record<string, {
|
|
104
|
+
failed: boolean;
|
|
105
|
+
log?: string;
|
|
106
|
+
}>, startedAt?: string): void;
|
|
107
|
+
recordReplanAudit(audit: ReplanAuditRecord): void;
|
|
108
|
+
close(status: 'completed' | 'failed' | 'cancelled'): void;
|
|
109
|
+
getRunDir(): string;
|
|
110
|
+
getFilePath(): string;
|
|
111
|
+
flush(): void;
|
|
112
|
+
private append;
|
|
113
|
+
private shouldRecord;
|
|
114
|
+
private filterValues;
|
|
115
|
+
}
|
|
116
|
+
/** 日志脱敏 helper:抹除 API key 类敏感 pattern 并截断超长文本,保证密钥不落 HopLog。见 [[spec-observability#^anc-obs-log-levels]] */
|
|
117
|
+
export declare function sanitize(text: string): string;
|
|
118
|
+
export declare function timestamp(): string;
|
|
119
|
+
/** 把日志条目对象序列化为 block-style YAML 文本,供 record* 方法实时 appendFileSync 写入 main.yaml。见 [[spec-observability#^anc-obs-hoplog-flush]] */
|
|
120
|
+
export declare function toYaml(obj: unknown, indent?: number): string;
|