@openlines/opl-pi-sht 0.1.15 → 0.1.16
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 +1 -1
- package/configs/opl-simplebench.json.sample +13 -2
- package/extensions/opl-simplebench/README.md +36 -1
- package/extensions/opl-simplebench/index.ts +63 -3
- package/extensions/opl-simplebench/types.ts +1 -1
- package/extensions/opl-simplebench/util/config.ts +9 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -200,7 +200,7 @@ npx playwright install chromium
|
|
|
200
200
|
|
|
201
201
|
A Pi package (npm or Git) still needs the one-time `npx playwright install chromium` command shown above.
|
|
202
202
|
|
|
203
|
-
`opl-simplebench` writes a full JSON benchmark artifact in Pi's current working directory by default. `--test-all` additionally writes `research.md` and `page.html` beside `result.json` in a result bundle. Copy `configs/opl-simplebench.json.sample` to `~/.pi/agent/configs/opl-simplebench.json` to configure DDGS/SearXNG research
|
|
203
|
+
`opl-simplebench` writes a full JSON benchmark artifact in Pi's current working directory by default. `--test-all` additionally writes `research.md` and `page.html` beside `result.json` in a result bundle. `/simplebench --sequence` runs a templated multi-run protocol (for example a model warm-up curve) defined in the `runSequence` block, with per-iteration tags, optional llama-server/llamagputop metrics, and a configurable pause between iterations. Copy `configs/opl-simplebench.json.sample` to `~/.pi/agent/configs/opl-simplebench.json` to configure DDGS/SearXNG research, optional llama-server/llamagputop metadata endpoints, and the run sequence. Use `/simplebench --no-artifact` or `simplebench({ no_artifact: true })` when responses must not be written to disk. Provider credentials remain outside tracked configuration; configure them through Pi provider settings, environment variables, or Pi authentication.
|
|
204
204
|
|
|
205
205
|
## Tests
|
|
206
206
|
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_comment": "Copy to ~/.pi/agent/configs/opl-simplebench.json. Endpoints are optional and only used by their corresponding Simplebench flags.",
|
|
2
|
+
"_comment": "Copy to ~/.pi/agent/configs/opl-simplebench.json. Endpoints are optional and only used by their corresponding Simplebench flags. runSequence powers /simplebench --sequence: each entry is a flag string; llamaMetrics appends --llama-server --llamagputop to every entry; pauseMs sleeps between iterations.",
|
|
3
3
|
"researchSearchProvider": "ddgs",
|
|
4
4
|
"researchSearchUrl": "http://127.0.0.1:8000",
|
|
5
5
|
"researchMaxResults": 5,
|
|
6
6
|
"llamaServerUrl": "http://127.0.0.1:8080/v1",
|
|
7
|
-
"llamagputopUrl": "http://127.0.0.1:4321/stats"
|
|
7
|
+
"llamagputopUrl": "http://127.0.0.1:4321/stats",
|
|
8
|
+
"runSequence": {
|
|
9
|
+
"enabled": false,
|
|
10
|
+
"llamaMetrics": true,
|
|
11
|
+
"pauseMs": 5000,
|
|
12
|
+
"sequence": [
|
|
13
|
+
"--coding-lite --tag=coldest",
|
|
14
|
+
"--3ptest --tag=colder",
|
|
15
|
+
"--coding-lite --tag=semiwarm",
|
|
16
|
+
"--test-all --research-live --tag=warm"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
8
19
|
}
|
|
@@ -8,12 +8,14 @@ Auditable Pi model benchmark for closed-answer contracts, JSON instruction follo
|
|
|
8
8
|
/simplebench
|
|
9
9
|
/simplebench <model>
|
|
10
10
|
/simplebench <model> [--no-artifact] [--thinking-max]
|
|
11
|
+
/simplebench <model> --3ptest
|
|
11
12
|
/simplebench <model> --coding-lite
|
|
12
13
|
/simplebench <model> --test-all
|
|
13
14
|
/simplebench <model> --research-live
|
|
14
15
|
/simplebench <model> --llama-server
|
|
15
16
|
/simplebench <model> --llamagputop
|
|
16
17
|
/simplebench <model> --tag=<word>
|
|
18
|
+
/simplebench <model> --sequence
|
|
17
19
|
/simplebench --all [--no-artifact]
|
|
18
20
|
/simplebench --all --test-all
|
|
19
21
|
/simplebench --help
|
|
@@ -39,6 +41,8 @@ simplebench({ model: "global.openai.gpt-5.6-terra", test_all: true })
|
|
|
39
41
|
- Twenty fixed closed-answer contracts, one strict JSON instruction test, and one chained tool-call test.
|
|
40
42
|
- Six opt-in execution-backed coding tasks in disposable directories (`--coding-lite`).
|
|
41
43
|
- `--test-all` runs baseline, coding-lite, and deterministic grounded research; `--research-live` adds the configured live research-artifact integration smoke test. `--all` still selects every Ollama model.
|
|
44
|
+
- `--3ptest` is the explicit form of the default baseline suite (reasoning, instruction following, tool calls). It changes nothing about the run; artifacts already name the baseline suite `3ptest`.
|
|
45
|
+
- `--sequence` runs the templated multi-iteration benchmark stored in `opl-simplebench.json` (`runSequence`): sequential iterations, per-entry flags and `--tag`, optional `llamaMetrics` and `pauseMs` cooldown. See "Run a templated sequence" below.
|
|
42
46
|
- `--llama-server` (`llama_server: true`) captures configured direct llama-server `/props` and `/metrics` without changing inference routing, so it works with a LiteLLM proxy.
|
|
43
47
|
- `--llamagputop` (`llamagputop: true`) captures configured llama.cpp `/stats` metadata independently of the inference provider; its served model ID is authoritative.
|
|
44
48
|
- `--tag=<word>` (`tag: "<word>"`) labels a run: stored as `benchmark.tag` and prefixed onto the artifact file or bundle name, for example `simplebench-coldrun-coding-lite-<model>-...`. The tag must be a single word (letters, digits, dot, dash, underscore).
|
|
@@ -80,6 +84,37 @@ Use this in sensitive environments. The terminal summary still reports category
|
|
|
80
84
|
|
|
81
85
|
`--all` is intentionally limited to Ollama discovery. It writes one artifact per model unless `--no-artifact` is set.
|
|
82
86
|
|
|
87
|
+
### Run a templated sequence
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
/simplebench --sequence
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Repeating a warm-up protocol (first-run-after-boot coding check, then baseline, then the full suite) means re-typing the same flags every session. `--sequence` reads the `runSequence` block from `~/.pi/agent/configs/opl-simplebench.json` and runs each entry as its own iteration against the current model (or the model passed with `--sequence`):
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"runSequence": {
|
|
98
|
+
"enabled": true,
|
|
99
|
+
"llamaMetrics": true,
|
|
100
|
+
"pauseMs": 5000,
|
|
101
|
+
"sequence": [
|
|
102
|
+
"--coding-lite --tag=coldest",
|
|
103
|
+
"--3ptest --tag=colder",
|
|
104
|
+
"--coding-lite --tag=semiwarm",
|
|
105
|
+
"--test-all --research-live --tag=warm"
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
- `enabled` gates the flag: `/simplebench --sequence` errors when it is missing or `false`. A bare `/simplebench` is unaffected.
|
|
112
|
+
- Each `sequence` entry is the same flag string you would type after `/simplebench`, including its own `--tag`.
|
|
113
|
+
- `llamaMetrics: true` appends `--llama-server --llamagputop` to every entry, so local server stats are captured per iteration without repeating the flags.
|
|
114
|
+
- `pauseMs` sleeps between iterations (never after the last one), including after a failed iteration, so thermal/KV-cache cooldown stays consistent across the warm-up curve.
|
|
115
|
+
- Iterations run sequentially and each writes its normal artifact/bundle; a failed iteration is reported and the sequence continues. A final summary line counts completed iterations.
|
|
116
|
+
- Entries containing `--all` or `--sequence` are rejected before anything runs, as are invalid configurations (empty sequence, negative `pauseMs`) and invalid per-entry tags. The outer `--tag` is ignored; each entry carries its own.
|
|
117
|
+
|
|
83
118
|
### Grounded research in `--test-all`
|
|
84
119
|
|
|
85
120
|
`--test-all` runs a deterministic agent workflow after coding-lite. `web_search` returns three benchmark-local source cards. The model must write every required finding as a Markdown bullet with its inline source ID (`[S1]`, `[S2]`) and list each cited source under `## Sources` as a Markdown link, for example `- [S1](https://research.fixture/S1)`. The verifier checks each exact claim-to-source relationship, source-list URL, tool trace, and the responsive minimalist `page.html` contract. It invokes no LLM judge, external search service, embedding model, or entailment model.
|
|
@@ -94,7 +129,7 @@ When coding-lite is enabled, each coding task is recorded as a `kind: "coding"`
|
|
|
94
129
|
|
|
95
130
|
### Configured metadata (`--llama-server`, `--llamagputop`)
|
|
96
131
|
|
|
97
|
-
Copy `configs/opl-simplebench.json.sample` to `~/.pi/agent/configs/opl-simplebench.json`. It uses camelCase fields: `llamaServerUrl`, `llamagputopUrl`, `researchSearchProvider`, `researchSearchUrl`, and `
|
|
132
|
+
Copy `configs/opl-simplebench.json.sample` to `~/.pi/agent/configs/opl-simplebench.json`. It uses camelCase fields: `llamaServerUrl`, `llamagputopUrl`, `researchSearchProvider`, `researchSearchUrl`, `researchMaxResults`, and `runSequence` (see "Run a templated sequence"). `--llama-server` captures `GET /props` and `/metrics` from configured `llamaServerUrl`; inference remains on the configured provider route, including LiteLLM. `--llamagputop` captures configured `llamagputopUrl` stats.
|
|
98
133
|
|
|
99
134
|
`serverStats` is omitted entirely for runs without the flag. Its shape:
|
|
100
135
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ExtensionAPI, AgentToolResult } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
import { debugLog } from "./util/debug";
|
|
3
3
|
import { detectProvider } from "./util/providers";
|
|
4
|
-
import { TOOL_SUPPORT_CACHE_PATH } from "./util/config";
|
|
4
|
+
import { readTestConfig, TOOL_SUPPORT_CACHE_PATH, type ModelTestUserConfig } from "./util/config";
|
|
5
5
|
import type { SimplebenchOptions } from "./types";
|
|
6
6
|
import { createBenchmark } from "./benchmark";
|
|
7
7
|
|
|
@@ -13,7 +13,25 @@ export function parseCommandArgs(args: string): SimplebenchOptions {
|
|
|
13
13
|
tag = tagToken.slice("--tag=".length);
|
|
14
14
|
if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(tag)) throw new Error(`--tag must be a single word (letters, digits, dot, dash, underscore): got "${tag}"`);
|
|
15
15
|
}
|
|
16
|
-
return { model: tokens.find(token => !token.startsWith("--")), allModels: tokens.includes("--all"), writeArtifact: !tokens.includes("--no-artifact"), thinkingMax: tokens.includes("--thinking-max"), codingLite: tokens.includes("--coding-lite"), testAll: tokens.includes("--test-all"), researchLive: tokens.includes("--research-live"), llamaServer: tokens.includes("--llama-server"), llamagputop: tokens.includes("--llamagputop"), ...(tag ? { tag } : {}) };
|
|
16
|
+
return { model: tokens.find(token => !token.startsWith("--")), allModels: tokens.includes("--all"), writeArtifact: !tokens.includes("--no-artifact"), thinkingMax: tokens.includes("--thinking-max"), codingLite: tokens.includes("--coding-lite"), testAll: tokens.includes("--test-all"), researchLive: tokens.includes("--research-live"), llamaServer: tokens.includes("--llama-server"), llamagputop: tokens.includes("--llamagputop"), ...(tag ? { tag } : {}), ...(tokens.includes("--3ptest") ? { threePTest: true } : {}), ...(tokens.includes("--sequence") ? { sequence: true } : {}) };
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface ResolvedRunSequence { runs: Array<{ entry: string; options: SimplebenchOptions }>; pauseMs: number }
|
|
20
|
+
|
|
21
|
+
/** Expand the configured runSequence into per-iteration benchmark options. Throws on disabled/invalid configuration. */
|
|
22
|
+
export function resolveRunSequence(userConfig: ModelTestUserConfig): ResolvedRunSequence {
|
|
23
|
+
const rs = userConfig.runSequence;
|
|
24
|
+
if (!rs?.enabled) throw new Error("runSequence is not enabled in opl-simplebench.json");
|
|
25
|
+
if (!Array.isArray(rs.sequence) || rs.sequence.length === 0) throw new Error("runSequence.sequence must be a non-empty array of flag strings");
|
|
26
|
+
const pauseMs = rs.pauseMs ?? 0;
|
|
27
|
+
if (typeof pauseMs !== "number" || !Number.isFinite(pauseMs) || pauseMs < 0) throw new Error(`runSequence.pauseMs must be a non-negative number: got ${JSON.stringify(rs.pauseMs)}`);
|
|
28
|
+
const runs = rs.sequence.map((entry: string) => {
|
|
29
|
+
const tokens = String(entry).trim().split(/\s+/);
|
|
30
|
+
if (tokens.includes("--all")) throw new Error(`runSequence entry cannot contain --all: "${entry}"`);
|
|
31
|
+
if (tokens.includes("--sequence")) throw new Error(`runSequence entry cannot contain --sequence: "${entry}"`);
|
|
32
|
+
return { entry: String(entry), options: parseCommandArgs(`${entry}${rs.llamaMetrics ? " --llama-server --llamagputop" : ""}`) };
|
|
33
|
+
});
|
|
34
|
+
return { runs, pauseMs };
|
|
17
35
|
}
|
|
18
36
|
|
|
19
37
|
export default function (pi: ExtensionAPI) {
|
|
@@ -22,7 +40,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
22
40
|
|
|
23
41
|
pi.registerCommand("simplebench", {
|
|
24
42
|
description: "Benchmark a model with auditable closed-answer, instruction, and tool-use tests.",
|
|
25
|
-
detailedHelp: "\n\n🔍 Simplebench Extension\n\nThis extension tests AI models across multiple dimensions:\n• Closed-answer contract: 20 deterministic final-line answers (logic, math, spatial, commonsense)\n• Tool Usage: Ability to use available tools effectively\n• Instruction Following: How well the model follows complex JSON instructions\n• Coding Lite: Six isolated, execution-backed coding tasks\n\n📋 Usage Examples:\n /simplebench # Test current model\n /simplebench <model> # Test a specific model\n /simplebench --all # Test all Ollama models\n /simplebench <model> --coding-lite # Run only coding tasks\n /simplebench <model> --test-all # Run baseline, coding, and grounded research\n /simplebench <model> --research-live # Add live search integration smoke test\n /simplebench --all --test-all # Run complete suite for every Ollama model\n /simplebench <model> --thinking-max # Request max reasoning\n /simplebench <model> --llama-server # Capture configured /props and /metrics\n /simplebench <model> --llamagputop # Capture configured llama.cpp stats\n /simplebench <model> --tag=coldrun # Label the run: benchmark.tag plus artifact filename prefix\n /simplebench --help # Show this help\n /simplebench --clear-cache # Clear tool support cache\n\nCoding tasks run in disposable directories and never access the user repository.\n",
|
|
43
|
+
detailedHelp: "\n\n🔍 Simplebench Extension\n\nThis extension tests AI models across multiple dimensions:\n• Closed-answer contract: 20 deterministic final-line answers (logic, math, spatial, commonsense)\n• Tool Usage: Ability to use available tools effectively\n• Instruction Following: How well the model follows complex JSON instructions\n• Coding Lite: Six isolated, execution-backed coding tasks\n\n📋 Usage Examples:\n /simplebench # Test current model\n /simplebench <model> # Test a specific model\n /simplebench --all # Test all Ollama models\n /simplebench <model> --3ptest # Run the default 3ptest baseline explicitly\n /simplebench <model> --coding-lite # Run only coding tasks\n /simplebench <model> --test-all # Run baseline, coding, and grounded research\n /simplebench <model> --research-live # Add live search integration smoke test\n /simplebench --all --test-all # Run complete suite for every Ollama model\n /simplebench <model> --sequence # Run the configured runSequence template\n /simplebench <model> --thinking-max # Request max reasoning\n /simplebench <model> --llama-server # Capture configured /props and /metrics\n /simplebench <model> --llamagputop # Capture configured llama.cpp stats\n /simplebench <model> --tag=coldrun # Label the run: benchmark.tag plus artifact filename prefix\n /simplebench --help # Show this help\n /simplebench --clear-cache # Clear tool support cache\n\nCoding tasks run in disposable directories and never access the user repository.\n",
|
|
26
44
|
getArgumentCompletions: async (prefix) => {
|
|
27
45
|
try {
|
|
28
46
|
const models = await getOllamaModels();
|
|
@@ -54,6 +72,8 @@ pi.registerCommand("simplebench", {
|
|
|
54
72
|
" /simplebench [model] --test-all - Run baseline, coding, and deterministic grounded research\n" +
|
|
55
73
|
" /simplebench [model] --research-live - Add live-search integration smoke test\n" +
|
|
56
74
|
" /simplebench [model] --tag=<word> - Label the run (single word; added to benchmark.tag and the artifact name)\n" +
|
|
75
|
+
" /simplebench [model] --3ptest - Run the default baseline suite explicitly\n" +
|
|
76
|
+
" /simplebench [model] --sequence - Run the templated multi-iteration sequence from opl-simplebench.json (runSequence; per-entry --tag, llamaMetrics and pauseMs supported; the outer --tag is ignored)\n" +
|
|
57
77
|
" /simplebench --all --test-all - Run complete suite for all Ollama models\n" +
|
|
58
78
|
" /simplebench --clear-cache - Clear tool support cache\n",
|
|
59
79
|
"info"
|
|
@@ -76,6 +96,46 @@ pi.registerCommand("simplebench", {
|
|
|
76
96
|
return;
|
|
77
97
|
}
|
|
78
98
|
|
|
99
|
+
if (parsedArgs.sequence) {
|
|
100
|
+
let resolved: ResolvedRunSequence;
|
|
101
|
+
try {
|
|
102
|
+
resolved = resolveRunSequence(readTestConfig());
|
|
103
|
+
} catch (e: any) {
|
|
104
|
+
ctx.ui.notify(e?.message || String(e), "error");
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const sequenceModel = parsedArgs.model || ctx.model?.id;
|
|
108
|
+
if (!sequenceModel) {
|
|
109
|
+
ctx.ui.notify("No model specified and no model currently selected", "error");
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
ctx.ui.notify(`Running ${resolved.runs.length}-iteration sequence (${resolved.runs.map(r => r.entry).join(" | ")})...`, "info");
|
|
113
|
+
let completed = 0;
|
|
114
|
+
for (let i = 0; i < resolved.runs.length; i++) {
|
|
115
|
+
if (i > 0 && resolved.pauseMs > 0) {
|
|
116
|
+
ctx.ui.notify(`Cooling down ${resolved.pauseMs / 1000}s before iteration ${i + 1}/${resolved.runs.length}...`, "info");
|
|
117
|
+
await new Promise(resolve => setTimeout(resolve, resolved.pauseMs));
|
|
118
|
+
}
|
|
119
|
+
const { entry, options } = resolved.runs[i];
|
|
120
|
+
const model = options.model || sequenceModel;
|
|
121
|
+
ctx.ui.notify(`Iteration ${i + 1}/${resolved.runs.length} (${entry}) on ${model}...`, "info");
|
|
122
|
+
try {
|
|
123
|
+
const report = await testModel(model, ctx, { ...options, model });
|
|
124
|
+
completed += 1;
|
|
125
|
+
pi.sendMessage({
|
|
126
|
+
customType: "simplebench-report",
|
|
127
|
+
content: report,
|
|
128
|
+
display: { type: "content", content: report },
|
|
129
|
+
details: { model, timestamp: new Date().toISOString() },
|
|
130
|
+
});
|
|
131
|
+
} catch (e: any) {
|
|
132
|
+
ctx.ui.notify(`Iteration ${i + 1} (${entry}) failed: ${e.message}`, "error");
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
ctx.ui.notify(`Sequence done: ${completed}/${resolved.runs.length} iterations completed`, "info");
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
|
|
79
139
|
if (parsedArgs.allModels) {
|
|
80
140
|
const providerInfo = detectProvider(ctx);
|
|
81
141
|
if (providerInfo.kind !== "ollama") {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ServerStats } from "./llama-server";
|
|
2
2
|
|
|
3
|
-
export interface SimplebenchOptions { model?: string; allModels: boolean; writeArtifact: boolean; thinkingMax?: boolean; codingLite?: boolean; testAll?: boolean; researchLive?: boolean; llamaServer?: boolean; llamagputop?: boolean; tag?: string; }
|
|
3
|
+
export interface SimplebenchOptions { model?: string; allModels: boolean; writeArtifact: boolean; thinkingMax?: boolean; codingLite?: boolean; testAll?: boolean; researchLive?: boolean; llamaServer?: boolean; llamagputop?: boolean; tag?: string; threePTest?: boolean; sequence?: boolean; }
|
|
4
4
|
export interface RequestMetrics { requestCount: number; retryCount: number; wallTimeMs: number; timeToAnswerMs: number; timeToFirstTokenMs: number | null; startedAt: string | null; finishedAt: string | null; inputTokens: number | null; outputTokens: number | null; totalTokens: number | null; outputTokensPerSecond: number | null; toolCalls: Array<{ name: string; arguments?: unknown }>; }
|
|
5
5
|
export interface TestRecord { id: string; kind: "reasoning" | "instructions" | "tools" | "coding" | "research-grounded" | "research-live"; category?: string; prompt: string; response: string | null; expectedAnswer?: string | string[]; extractedAnswer?: string; score: string; passed: boolean; error: string | null; metrics: RequestMetrics; coding?: { publicPassed: boolean; hiddenPassed: boolean; verifiedAfterEdit: boolean; unrelatedFiles: string[]; toolCalls: number; turns: number; efficiency?: "STRONG" | "MODERATE" | "WEAK" | "FAIL"; }; research?: { toolCalls: string[]; files: string[]; }; }
|
|
6
6
|
export interface RunArtifact { schemaVersion: 1; benchmark: { name: "opl-simplebench"; suite?: "baseline" | "coding-lite" | "test-all"; tag?: string; model: string; provider: string; providerKind: string; thinking: { requested: "default" | "max"; effective: "provider-default" | "openai-reasoning-effort" | "pi-bedrock-reasoning"; level: "max" | null; modelMetadataSource: "active-context" | "scoped-model" | null; }; startedAt: string; finishedAt: string; wallTimeMs: number; artifactEnabled: boolean; }; tests: TestRecord[]; summary: Record<string, unknown> & { serverStats?: ServerStats }; }
|
|
@@ -79,6 +79,15 @@ export interface ModelTestUserConfig {
|
|
|
79
79
|
researchMaxResults?: number;
|
|
80
80
|
llamaServerUrl?: string;
|
|
81
81
|
llamagputopUrl?: string;
|
|
82
|
+
runSequence?: RunSequenceConfig;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** Templated multi-run benchmark sequence used by `/simplebench --sequence`. */
|
|
86
|
+
export interface RunSequenceConfig {
|
|
87
|
+
enabled?: boolean;
|
|
88
|
+
llamaMetrics?: boolean;
|
|
89
|
+
pauseMs?: number;
|
|
90
|
+
sequence?: string[];
|
|
82
91
|
}
|
|
83
92
|
|
|
84
93
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openlines/opl-pi-sht",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"description": "Pi coding-agent extension kit: token-efficient context, safe modes, fingerprinted /init, model benchmarking, web access, and browser automation.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|