ptbk 0.119.0-21 → 0.119.0-26
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 +16 -9
- package/dist/browser/browser.d.ts +50 -36
- package/dist/browser/browser.js +162 -118
- package/dist/browser/browser.js.map +1 -1
- package/dist/browser/fleet.d.ts +59 -0
- package/dist/browser/fleet.js +148 -0
- package/dist/browser/fleet.js.map +1 -0
- package/dist/browser/recording.js +2 -2
- package/dist/browser/recording.js.map +1 -1
- package/dist/chats/conversation.d.ts +1 -1
- package/dist/chats/conversation.js +8 -6
- package/dist/chats/conversation.js.map +1 -1
- package/dist/chats/local.js +5 -5
- package/dist/chats/local.js.map +1 -1
- package/dist/cli/commands/add.js +1 -1
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/boilerplates.js +1 -1
- package/dist/cli/commands/boilerplates.js.map +1 -1
- package/dist/cli/commands/find.js +1 -1
- package/dist/cli/commands/find.js.map +1 -1
- package/dist/cli/commands/fix.js +9 -4
- package/dist/cli/commands/fix.js.map +1 -1
- package/dist/cli/commands/init.d.ts +5 -0
- package/dist/cli/commands/init.js +279 -118
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/migrate.js +1 -1
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/ping.js +20 -12
- package/dist/cli/commands/ping.js.map +1 -1
- package/dist/cli/commands/plan.js +20 -12
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/restart.js +6 -5
- package/dist/cli/commands/restart.js.map +1 -1
- package/dist/cli/commands/run.js +26 -15
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/start.js +11 -7
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/tool.d.ts +19 -0
- package/dist/cli/commands/tool.js +320 -0
- package/dist/cli/commands/tool.js.map +1 -0
- package/dist/cli/commands/verify.js +1 -1
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/common.d.ts +7 -1
- package/dist/cli/common.js +37 -20
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/compatibility.d.ts +8 -0
- package/dist/cli/compatibility.js +32 -0
- package/dist/cli/compatibility.js.map +1 -0
- package/dist/cli/parser.js +7 -3
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/registry.js +182 -7
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli/service-view.js +1 -1
- package/dist/cli/service-view.js.map +1 -1
- package/dist/cli/sources.js +2 -0
- package/dist/cli/sources.js.map +1 -1
- package/dist/cli/spec.js +8 -6
- package/dist/cli/spec.js.map +1 -1
- package/dist/common/naming.d.ts +53 -0
- package/dist/common/naming.js +90 -0
- package/dist/common/naming.js.map +1 -0
- package/dist/engine/agenda.d.ts +70 -9
- package/dist/engine/agenda.js +294 -61
- package/dist/engine/agenda.js.map +1 -1
- package/dist/engine/executor.d.ts +5 -0
- package/dist/engine/executor.js +24 -11
- package/dist/engine/executor.js.map +1 -1
- package/dist/engine/harnesses.d.ts +82 -18
- package/dist/engine/harnesses.js +191 -39
- package/dist/engine/harnesses.js.map +1 -1
- package/dist/engine/preview.js +2 -2
- package/dist/engine/preview.js.map +1 -1
- package/dist/engine/routing.d.ts +10 -0
- package/dist/engine/routing.js +67 -28
- package/dist/engine/routing.js.map +1 -1
- package/dist/engine/snapshot.d.ts +107 -7
- package/dist/engine/state.d.ts +4 -2
- package/dist/engine/state.js.map +1 -1
- package/dist/engine/sync.d.ts +96 -0
- package/dist/engine/sync.js +199 -0
- package/dist/engine/sync.js.map +1 -0
- package/dist/engine/team.d.ts +1 -0
- package/dist/engine/team.js +12 -8
- package/dist/engine/team.js.map +1 -1
- package/dist/expert/_main.md +96 -67
- package/dist/expert/agents/_index.md +10 -7
- package/dist/expert/agents/core-agents.md +4 -2
- package/dist/expert/agents/fixer.md +15 -12
- package/dist/expert/cli/acceptance.md +96 -78
- package/dist/expert/cli/api.md +26 -14
- package/dist/expert/cli/autonomous-operation.md +17 -19
- package/dist/expert/cli/browser.md +24 -24
- package/dist/expert/cli/checks.md +18 -10
- package/dist/expert/cli/cli.md +48 -41
- package/dist/expert/cli/configuration-migrations.md +43 -0
- package/dist/expert/cli/configuration.md +24 -14
- package/dist/expert/cli/controls.md +23 -11
- package/dist/expert/cli/dashboard-details.md +28 -10
- package/dist/expert/cli/dashboard-layout.md +15 -15
- package/dist/expert/cli/dashboard.md +8 -10
- package/dist/expert/cli/environment.md +33 -0
- package/dist/expert/cli/execution.md +10 -8
- package/dist/expert/cli/git-persistence.md +27 -21
- package/dist/expert/cli/git-preflight.md +8 -4
- package/dist/expert/cli/git-synchronization.md +32 -6
- package/dist/expert/cli/harness-plugins.md +12 -12
- package/dist/expert/cli/harnesses.md +22 -16
- package/dist/expert/cli/initialization-ui.md +14 -14
- package/dist/expert/cli/initialization.md +31 -21
- package/dist/expert/cli/installation.md +6 -0
- package/dist/expert/cli/isolation.md +5 -3
- package/dist/expert/cli/releasing.md +17 -3
- package/dist/expert/cli/retries.md +10 -8
- package/dist/expert/cli/run.md +7 -5
- package/dist/expert/cli/start.md +21 -15
- package/dist/expert/cli/status-view.md +15 -17
- package/dist/expert/cli/synchronization-setup.md +24 -0
- package/dist/expert/cli/terminal.md +14 -16
- package/dist/expert/cli/tool-management.md +60 -0
- package/dist/expert/cli/tool-runtime.md +35 -0
- package/dist/expert/cli/tools-migration.md +50 -0
- package/dist/expert/cli/tools.md +73 -0
- package/dist/expert/cli/trace-configuration.md +9 -11
- package/dist/expert/cli/updates.md +7 -7
- package/dist/expert/cli/windows-installer.md +67 -0
- package/dist/expert/cli/workspace.md +2 -0
- package/dist/expert/coding-standards/_index.md +11 -0
- package/dist/expert/coding-standards/naming.md +30 -0
- package/dist/expert/coding-standards/shared-logic.md +27 -0
- package/dist/expert/concepts/automatic-repair.md +33 -0
- package/dist/expert/concepts/engine-and-project.md +7 -5
- package/dist/expert/dictionary.md +18 -18
- package/dist/harness/plugins/claude-code/index.js +4 -2
- package/dist/harness/plugins/claude-code/index.js.map +1 -1
- package/dist/harness/plugins/cline/index.js +1 -0
- package/dist/harness/plugins/cline/index.js.map +1 -1
- package/dist/harness/plugins/gemini/index.js +2 -0
- package/dist/harness/plugins/gemini/index.js.map +1 -1
- package/dist/harness/plugins/github-copilot/index.js +1 -0
- package/dist/harness/plugins/github-copilot/index.js.map +1 -1
- package/dist/harness/plugins/openai-codex/index.js +13 -9
- package/dist/harness/plugins/openai-codex/index.js.map +1 -1
- package/dist/harness/plugins/opencode/index.js +1 -0
- package/dist/harness/plugins/opencode/index.js.map +1 -1
- package/dist/harness/plugins/qwen-code/index.js +1 -0
- package/dist/harness/plugins/qwen-code/index.js.map +1 -1
- package/dist/harness/types.d.ts +16 -5
- package/dist/project/config.d.ts +135 -48
- package/dist/project/config.js +331 -119
- package/dist/project/config.js.map +1 -1
- package/dist/project/configuration.d.ts +43 -0
- package/dist/project/configuration.js +165 -0
- package/dist/project/configuration.js.map +1 -0
- package/dist/project/defaults.d.ts +4 -2
- package/dist/project/defaults.js +10 -5
- package/dist/project/defaults.js.map +1 -1
- package/dist/project/git.d.ts +28 -0
- package/dist/project/git.js +81 -0
- package/dist/project/git.js.map +1 -1
- package/dist/project/migrations.d.ts +96 -0
- package/dist/project/migrations.js +301 -0
- package/dist/project/migrations.js.map +1 -0
- package/dist/project/publication.d.ts +57 -0
- package/dist/project/publication.js +117 -0
- package/dist/project/publication.js.map +1 -0
- package/dist/project/readiness.d.ts +14 -5
- package/dist/project/readiness.js +23 -22
- package/dist/project/readiness.js.map +1 -1
- package/dist/project/setup.js +2 -0
- package/dist/project/setup.js.map +1 -1
- package/dist/service/actions.d.ts +12 -4
- package/dist/service/actions.js +32 -2
- package/dist/service/actions.js.map +1 -1
- package/dist/service/control.d.ts +1 -1
- package/dist/service/control.js +1 -1
- package/dist/service/host.d.ts +5 -2
- package/dist/service/host.js +26 -16
- package/dist/service/host.js.map +1 -1
- package/dist/service/http.js +7 -2
- package/dist/service/http.js.map +1 -1
- package/dist/service/launcher.d.ts +2 -1
- package/dist/service/launcher.js +1 -0
- package/dist/service/launcher.js.map +1 -1
- package/dist/service/records.d.ts +3 -0
- package/dist/service/records.js +1 -1
- package/dist/service/records.js.map +1 -1
- package/dist/service/spa/app.css +39 -0
- package/dist/service/spa/app.js +242 -39
- package/dist/service/worker.js +1 -0
- package/dist/service/worker.js.map +1 -1
- package/dist/tools/environment.d.ts +122 -0
- package/dist/tools/environment.js +199 -0
- package/dist/tools/environment.js.map +1 -0
- package/dist/tools/model.d.ts +180 -0
- package/dist/tools/model.js +111 -0
- package/dist/tools/model.js.map +1 -0
- package/dist/tools/normalize.d.ts +51 -0
- package/dist/tools/normalize.js +321 -0
- package/dist/tools/normalize.js.map +1 -0
- package/dist/tools/operations.d.ts +198 -0
- package/dist/tools/operations.js +378 -0
- package/dist/tools/operations.js.map +1 -0
- package/dist/tools/readiness.d.ts +72 -0
- package/dist/tools/readiness.js +160 -0
- package/dist/tools/readiness.js.map +1 -0
- package/dist/ui/dashboard.d.ts +3 -0
- package/dist/ui/dashboard.js +173 -2
- package/dist/ui/dashboard.js.map +1 -1
- package/dist/ui/details.d.ts +35 -1
- package/dist/ui/details.js +103 -2
- package/dist/ui/details.js.map +1 -1
- package/dist/ui/secret.d.ts +8 -0
- package/dist/ui/secret.js +41 -0
- package/dist/ui/secret.js.map +1 -0
- package/dist/ui/status-view.d.ts +1 -0
- package/dist/ui/status-view.js +33 -8
- package/dist/ui/status-view.js.map +1 -1
- package/dist/ui/tool-forms.d.ts +24 -0
- package/dist/ui/tool-forms.js +133 -0
- package/dist/ui/tool-forms.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { HARNESS_PLUGINS } from '../harness/registry.js';
|
|
2
|
+
import { BROWSER_VARIANTS, PROFILE_SOURCES, describeProfileSource } from '../tools/model.js';
|
|
3
|
+
import { CANCELLED, confirm, inputLine, selectOne } from './prompts.js';
|
|
4
|
+
import { readConcealed } from './secret.js';
|
|
5
|
+
/**
|
|
6
|
+
* Raised when the user leaves the form (nothing is changed).
|
|
7
|
+
*/
|
|
8
|
+
class FormCancelled extends Error {
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Unwraps a prompt answer.
|
|
12
|
+
*/
|
|
13
|
+
function answer(value) {
|
|
14
|
+
if (value === CANCELLED)
|
|
15
|
+
throw new FormCancelled('cancelled');
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Asks for the browser fields.
|
|
20
|
+
*/
|
|
21
|
+
async function browserFields(terminal, frame, current) {
|
|
22
|
+
const profileSource = answer(await selectOne(terminal, {
|
|
23
|
+
frame,
|
|
24
|
+
question: 'Browser profile:',
|
|
25
|
+
choices: PROFILE_SOURCES.map((source) => ({ value: source, label: describeProfileSource(source, source === 'CUSTOM' ? '<path>' : undefined), description: source })),
|
|
26
|
+
defaultValue: current?.profileSource ?? 'MANAGED_GLOBAL',
|
|
27
|
+
}));
|
|
28
|
+
const profilePath = profileSource === 'CUSTOM' ? answer(await inputLine(terminal, { frame, question: 'Path of the existing profile directory:', initial: current?.profilePath, validate: (value) => (!value ? 'Enter a path.' : undefined) })) : undefined;
|
|
29
|
+
const isHeadless = answer(await confirm(terminal, { frame, question: 'Run it headless (without a window)?', defaultYes: current?.isHeadless ?? true }));
|
|
30
|
+
return { profileSource, ...(profilePath ? { profilePath } : {}), isHeadless };
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Asks for the authentication of a harness instance; a new API key is read concealed.
|
|
34
|
+
*/
|
|
35
|
+
async function harnessFields(terminal, frame, name, current) {
|
|
36
|
+
const authentication = answer(await selectOne(terminal, {
|
|
37
|
+
frame,
|
|
38
|
+
question: 'Authentication:',
|
|
39
|
+
choices: [
|
|
40
|
+
{ value: 'NATIVE', label: 'Native login', description: 'the installation’s own account/subscription (no API billing)' },
|
|
41
|
+
{ value: 'API_KEY', label: 'API key', description: 'explicit paid API access through an environment variable' },
|
|
42
|
+
],
|
|
43
|
+
defaultValue: current?.authentication ?? 'NATIVE',
|
|
44
|
+
}));
|
|
45
|
+
if (authentication !== 'API_KEY')
|
|
46
|
+
return { fields: { authentication } };
|
|
47
|
+
const apiKeyEnv = answer(await inputLine(terminal, {
|
|
48
|
+
frame,
|
|
49
|
+
question: 'Environment variable holding the key (stored as ${{ env.NAME }}, never the key):',
|
|
50
|
+
initial: current?.apiKeyEnv ?? `${name.toUpperCase().replace(/[^A-Z0-9]+/g, '_')}_API_KEY`,
|
|
51
|
+
validate: (value) => (/^[A-Za-z_][A-Za-z0-9_]*$/.test(value) ? undefined : 'Use letters, digits and underscores.'),
|
|
52
|
+
}));
|
|
53
|
+
const store = answer(await confirm(terminal, { frame, question: `Store a new value of ${apiKeyEnv} in the project's ignored .env now?`, defaultYes: !current?.apiKeyEnv }));
|
|
54
|
+
if (!store)
|
|
55
|
+
return { fields: { authentication, apiKeyEnv } };
|
|
56
|
+
const value = await readConcealed(terminal, ` Value of ${apiKeyEnv}`);
|
|
57
|
+
return { fields: { authentication, apiKeyEnv }, secret: value ? { variable: apiKeyEnv, value } : undefined };
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The add form: type, variant, name, description and the variant's fields.
|
|
61
|
+
*
|
|
62
|
+
* @private dashboard tool forms
|
|
63
|
+
*/
|
|
64
|
+
export async function addToolForm(terminal) {
|
|
65
|
+
const frame = { title: 'ptbk dashboard', step: 'Add a tool' };
|
|
66
|
+
try {
|
|
67
|
+
const type = answer(await selectOne(terminal, { frame, question: 'Tool type:', choices: [{ value: 'HARNESS', label: 'Harness', description: 'a coding agent integration instance (account, subscription or API key)' }, { value: 'BROWSER', label: 'Browser', description: 'a named browser profile for websites' }], defaultValue: 'HARNESS' }));
|
|
68
|
+
const variant = answer(await selectOne(terminal, {
|
|
69
|
+
frame,
|
|
70
|
+
question: 'Variant:',
|
|
71
|
+
choices: type === 'BROWSER' ? BROWSER_VARIANTS.map((value) => ({ value, label: value })) : HARNESS_PLUGINS.map((plugin) => ({ value: plugin.variant, label: plugin.displayName, description: plugin.variant, featured: plugin.featured })),
|
|
72
|
+
defaultValue: type === 'BROWSER' ? 'CHROME' : 'OPENAI_CODEX',
|
|
73
|
+
}));
|
|
74
|
+
const name = answer(await inputLine(terminal, { frame, question: 'Name (kebab-case, e.g. work-browser or codex-company):', validate: (value) => (!value ? 'Enter a name.' : undefined) }));
|
|
75
|
+
const description = answer(await inputLine(terminal, { frame, question: 'Description (optional; helps agents choose it — enter "-" for none):', initial: '-' }));
|
|
76
|
+
const base = { type, variant, name, ...(description && description !== '-' ? { description } : {}) };
|
|
77
|
+
if (type === 'BROWSER')
|
|
78
|
+
return { operation: { kind: 'add', tool: { ...base, ...(await browserFields(terminal, frame)) } } };
|
|
79
|
+
const harness = await harnessFields(terminal, frame, name);
|
|
80
|
+
return { operation: { kind: 'add', tool: { ...base, ...harness.fields } }, secret: harness.secret };
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error instanceof FormCancelled)
|
|
84
|
+
return undefined;
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The modify form of one tool (unchanged fields stay as they are).
|
|
90
|
+
*
|
|
91
|
+
* @private dashboard tool forms
|
|
92
|
+
*/
|
|
93
|
+
export async function modifyToolForm(terminal, item) {
|
|
94
|
+
const frame = { title: 'ptbk dashboard', step: `Modify ${item.name}` };
|
|
95
|
+
try {
|
|
96
|
+
const field = answer(await selectOne(terminal, {
|
|
97
|
+
frame,
|
|
98
|
+
question: `What should change on ${item.name}?`,
|
|
99
|
+
choices: [
|
|
100
|
+
{ value: 'description', label: 'Description' },
|
|
101
|
+
{ value: 'rename', label: 'Name' },
|
|
102
|
+
...(item.type === 'BROWSER' ? [{ value: 'browser', label: 'Profile and window mode' }] : [{ value: 'authentication', label: 'Authentication / API key' }, { value: 'model', label: 'Preferred model' }]),
|
|
103
|
+
],
|
|
104
|
+
defaultValue: item.type === 'BROWSER' ? 'browser' : 'authentication',
|
|
105
|
+
}));
|
|
106
|
+
if (field === 'rename') {
|
|
107
|
+
const rename = answer(await inputLine(terminal, { frame, question: 'New name:', initial: item.name }));
|
|
108
|
+
return { operation: { kind: 'modify', name: item.name, changes: {}, rename } };
|
|
109
|
+
}
|
|
110
|
+
if (field === 'description') {
|
|
111
|
+
const description = answer(await inputLine(terminal, { frame, question: 'Description ("-" removes it):', initial: item.description ?? '-' }));
|
|
112
|
+
return { operation: { kind: 'modify', name: item.name, changes: { description: description === '-' ? null : description } } };
|
|
113
|
+
}
|
|
114
|
+
if (field === 'model') {
|
|
115
|
+
const model = answer(await inputLine(terminal, { frame, question: 'Preferred model ("-" uses the harness default):', initial: item.fields.model ?? '-' }));
|
|
116
|
+
return { operation: { kind: 'modify', name: item.name, changes: { model: model === '-' ? null : model } } };
|
|
117
|
+
}
|
|
118
|
+
if (field === 'browser') {
|
|
119
|
+
const [source, ...path] = (item.fields.profile ?? 'MANAGED_GLOBAL').split(' ');
|
|
120
|
+
const changes = await browserFields(terminal, frame, { profileSource: source, profilePath: path.join(' ') || undefined, isHeadless: item.fields.isHeadless !== 'false' });
|
|
121
|
+
return { operation: { kind: 'modify', name: item.name, changes: { ...changes, ...(changes.profileSource !== 'CUSTOM' ? { profilePath: null } : {}) } } };
|
|
122
|
+
}
|
|
123
|
+
const current = /env\.([A-Za-z_][A-Za-z0-9_]*)/.exec(item.fields.apiKey ?? '')?.[1];
|
|
124
|
+
const harness = await harnessFields(terminal, frame, item.name, { authentication: item.fields.authentication, apiKeyEnv: current });
|
|
125
|
+
return { operation: { kind: 'modify', name: item.name, changes: harness.fields }, secret: harness.secret };
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
if (error instanceof FormCancelled)
|
|
129
|
+
return undefined;
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=tool-forms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-forms.js","sourceRoot":"","sources":["../../src/ui/tool-forms.ts"],"names":[],"mappings":"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"}
|