openpond 0.0.61 → 0.0.63
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/dist/chunks/{actions-command-QVYIPEN5.js → actions-command-DZ6D7JTO.js} +2 -2
- package/dist/chunks/{app-layer-GCNXR4F3.js → app-layer-TUAFALOE.js} +5 -5
- package/dist/chunks/{app-server-runtime-737DBOSH.js → app-server-runtime-O26LVUYH.js} +7 -7
- package/dist/chunks/{apps-JB3POF6Z.js → apps-KSZRA7Y2.js} +5 -5
- package/dist/chunks/{chunk-NPEWMLRH.js → chunk-66KQLYSH.js} +1 -1
- package/dist/chunks/{chunk-ZJPLJP2Q.js → chunk-6FKBOGA4.js} +2 -2
- package/dist/chunks/{chunk-6RMGHEFF.js → chunk-7IFPXSSJ.js} +1 -1
- package/dist/chunks/{chunk-5HMXXGWZ.js → chunk-7UVEB2AZ.js} +2 -2
- package/dist/chunks/{chunk-32R4GQD3.js → chunk-IXA5PMXC.js} +2 -2
- package/dist/chunks/{chunk-XIUCBUUQ.js → chunk-J2REM7LE.js} +1 -1
- package/dist/chunks/{chunk-XSHMPOQV.js → chunk-JGOP4GCK.js} +6 -0
- package/dist/chunks/{chunk-TOMMZN6V.js → chunk-JTFDOA2P.js} +41 -16
- package/dist/chunks/{chunk-IZ3XGRAG.js → chunk-K4JEWEJQ.js} +1 -1
- package/dist/chunks/{chunk-L5JTI6LQ.js → chunk-KGU437HZ.js} +4 -2
- package/dist/chunks/{chunk-ZAX7MLQJ.js → chunk-LEL5AQJU.js} +1 -1
- package/dist/chunks/{chunk-B3WVCPXG.js → chunk-PLDCQVNW.js} +71 -6
- package/dist/chunks/{chunk-YSVY4O42.js → chunk-T55IL3GI.js} +1 -1
- package/dist/chunks/{chunk-BQQS5RRI.js → chunk-V2CTXKS2.js} +156 -61
- package/dist/chunks/{chunk-LBIVEX6V.js → chunk-YDH34BGG.js} +35 -33
- package/dist/chunks/{cli-MFFCFH3P.js → cli-LPFU4ULD.js} +6 -6
- package/dist/chunks/{core-commands-KCFU7U5Y.js → core-commands-OEOBYFIW.js} +6 -6
- package/dist/chunks/{desktop-test-FEQVX4N4.js → desktop-test-BRLZF3O7.js} +5 -5
- package/dist/chunks/{extension-M4DH25KH.js → extension-5BUCIDKG.js} +1 -1
- package/dist/chunks/{help-ZUIE4EPY.js → help-MT6VPW4X.js} +1 -1
- package/dist/chunks/{opchat-7KRZIFFD.js → opchat-O4DVKNFW.js} +5 -5
- package/dist/chunks/{organizations-ZWPFNM6K.js → organizations-ACNOJ57Q.js} +7 -7
- package/dist/chunks/{profile-GF57OWI6.js → profile-7LLWXAJE.js} +12 -7
- package/dist/chunks/{project-agent-65MXZHGM.js → project-agent-RVYQYTU2.js} +27 -7
- package/dist/chunks/{sandbox-command-WH2OQRHP.js → sandbox-command-QST23BX5.js} +6 -6
- package/dist/chunks/{sandbox-template-W5HU24TF.js → sandbox-template-N7UG3P6V.js} +7 -7
- package/dist/chunks/{src-YUIJKNIC.js → src-CPM5Q7T5.js} +4 -4
- package/dist/chunks/{src-O5QXOQ5H.js → src-M37V6NVU.js} +60 -13
- package/dist/chunks/{teams-bot-5ATLXSHC.js → teams-bot-ITTI47XS.js} +5 -5
- package/dist/chunks/{workspaces-4XJ3GXL4.js → workspaces-CYBR37US.js} +2 -2
- package/dist/cli.js +13 -13
- package/dist/index.js +6 -0
- package/dist/sandbox/client-handles.d.ts +2 -1
- package/dist/sandbox/client.d.ts +3 -1
- package/dist/sandbox/types/org-project-agent.d.ts +13 -0
- package/dist/web/assets/{AppDialog-BvdkukM_.js → AppDialog-wIb8mGQ0.js} +1 -1
- package/dist/web/assets/{AppsView-9h3-BQbk.js → AppsView-D097dPIV.js} +1 -1
- package/dist/web/assets/{BrowserSidebar-C6WJ5wIu.js → BrowserSidebar-DrD-o_yB.js} +1 -1
- package/dist/web/assets/{CommandMenu-C7en9zgQ.js → CommandMenu-L5LelA2h.js} +1 -1
- package/dist/web/assets/{CommunityView-CoqI6Dks.js → CommunityView-DUJ8NryS.js} +1 -1
- package/dist/web/assets/{ComposerCreateImproveStrip-DMq6A2Ba.js → ComposerCreateImproveStrip-BP-7DmQG.js} +1 -1
- package/dist/web/assets/{GetStartedView-B-zgx1jI.js → GetStartedView-B7gB6Hii.js} +1 -1
- package/dist/web/assets/{LabModelVersionDetailPage-CkNOBygO.js → LabModelVersionDetailPage-CNDz2a6I.js} +1 -1
- package/dist/web/assets/{LabSkillSidebar-CmRHuu78.js → LabSkillSidebar-BImOQcjk.js} +1 -1
- package/dist/web/assets/{LabsRoute-DLPZqEev.js → LabsRoute-BauSK1is.js} +3 -3
- package/dist/web/assets/{MainChatThread-CFGsODmc.js → MainChatThread-BZvAqQO6.js} +2 -2
- package/dist/web/assets/MainPane-CuhwxMxg.js +6 -0
- package/dist/web/assets/{MarkdownText-C4Ixpl-i.js → MarkdownText-gwAue4u5.js} +1 -1
- package/dist/web/assets/{Messages-DmEk_BWS.js → Messages-DijmQL-z.js} +8 -8
- package/dist/web/assets/{NativeSkillSidebar-Cn824hrX.js → NativeSkillSidebar-aCkrdGa0.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-BFEDv4Ga.js → NewProjectDialog-D98WIQzr.js} +1 -1
- package/dist/web/assets/{OutputsPage-hfQyqQzx.js → OutputsPage-BA0c6cfy.js} +1 -1
- package/dist/web/assets/{RightChatPanelStack-CiPKX3Ea.js → RightChatPanelStack-DKDEmrEH.js} +1 -1
- package/dist/web/assets/{ScheduledWorkPage-CyoZsUCe.js → ScheduledWorkPage-DeHi99mv.js} +1 -1
- package/dist/web/assets/SettingsView--fL3Ecuy.js +6 -0
- package/dist/web/assets/SettingsView-BS5m5vdt.css +1 -0
- package/dist/web/assets/TeamChatView-D2mCoLZ3.js +3 -0
- package/dist/web/assets/{TerminalOverlay-CpsPuPIM.js → TerminalOverlay-BHMsVp4L.js} +1 -1
- package/dist/web/assets/{TrainingCreationPanel-DMLpUVbJ.js → TrainingCreationPanel-CPnMWgkt.js} +1 -1
- package/dist/web/assets/{TrainingDraftPanel-gAhpwkYs.js → TrainingDraftPanel-0scEtzSW.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-WBtxLhBx.js → UsageSettingsSection-COoCLLg6.js} +1 -1
- package/dist/web/assets/{WorkspaceDiffPanel-CUpwqvzZ.js → WorkspaceDiffPanel-BFTwZ_dB.js} +5 -5
- package/dist/web/assets/{WorkspaceEnvironmentMenu-LIbOBT4f.js → WorkspaceEnvironmentMenu-DFlkdd9T.js} +3 -3
- package/dist/web/assets/{WorkspaceGitDialogs-8y7rRSou.js → WorkspaceGitDialogs-Dt3LO27Z.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-BpHmWrCD.js → WorkspaceMonacoEditor-3g05teoR.js} +3 -3
- package/dist/web/assets/{arrow-up-right-3TbyK1ec.js → arrow-up-right-DYGSWA2J.js} +1 -1
- package/dist/web/assets/{chevron-up-C4tTuxXs.js → chevron-up-4qfvI9iW.js} +1 -1
- package/dist/web/assets/{cloud-upload-ZGHLWEn3.js → cloud-upload-COReKxOy.js} +1 -1
- package/dist/web/assets/{cssMode-kfZCOm_r.js → cssMode-BbH67BYF.js} +1 -1
- package/dist/web/assets/{folder-open-C4WG_lDr.js → folder-open-9OjGqNgP.js} +1 -1
- package/dist/web/assets/{folder-plus-CKRaDeR3.js → folder-plus-DF5E6zr3.js} +1 -1
- package/dist/web/assets/{git-branch-yLi5tff8.js → git-branch-eCwyZXMl.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-BPyGYak3.js → git-commit-horizontal-cPm51DqY.js} +1 -1
- package/dist/web/assets/{htmlMode-DT--Et9k.js → htmlMode-DD6Oge4x.js} +1 -1
- package/dist/web/assets/{index--lwjVZXT.js → index-BO2W2U23.js} +66 -66
- package/dist/web/assets/index-BRLugX1S.js +1 -0
- package/dist/web/assets/{index-B_HvNtwl.css → index-Y7IoiSlQ.css} +1 -1
- package/dist/web/assets/{info-CzzHwSUb.js → info-p1mFpqBI.js} +1 -1
- package/dist/web/assets/{jsonMode-CKg1GzqC.js → jsonMode-C2Xd56A_.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-B76Yo6xo.js → lspLanguageFeatures-BjYEk4gJ.js} +1 -1
- package/dist/web/assets/{monaco.contribution-BRuQU-2A.js → monaco.contribution-Bo-5m7yy.js} +2 -2
- package/dist/web/assets/{monaco.contribution-CLpGfCSS.js → monaco.contribution-C7WMqwmc.js} +2 -2
- package/dist/web/assets/{monaco.contribution-CS3H8RrD.js → monaco.contribution-DzWlEgU1.js} +2 -2
- package/dist/web/assets/{monaco.contribution-DqeexNAI.js → monaco.contribution-quEPEMQZ.js} +2 -2
- package/dist/web/assets/{play-EDFh3BPS.js → play-Ctx-iMqd.js} +1 -1
- package/dist/web/assets/{python-De_Vr_hD.js → python-Cm64qCpk.js} +1 -1
- package/dist/web/assets/{refresh-cw-DRJJ-X1U.js → refresh-cw-Bn28jIl0.js} +1 -1
- package/dist/web/assets/{save-BSxqIWP6.js → save-BM5IQX65.js} +1 -1
- package/dist/web/assets/{square-BV-Vgh5a.js → square-DAGpFfSr.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-1Suz4cxo.js → toggleHighContrast-DLW8Fnck.js} +1 -1
- package/dist/web/assets/{tsMode-DMyzpvFI.js → tsMode-BleUN_8S.js} +1 -1
- package/dist/web/assets/{upload-jVxCW0dO.js → upload-vaAKFfxi.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-DNpnOBA8.js → useLocalAgentSchedules-Ccenbqf6.js} +1 -1
- package/dist/web/assets/{wifi-off-IzGGiOX_.js → wifi-off-DJA9KReb.js} +1 -1
- package/dist/web/assets/{workers-Crdnk6Zy.js → workers-CFG-afha.js} +1 -1
- package/dist/web/assets/{yaml-CF3tmjgW.js → yaml-Cs8iZKVC.js} +1 -1
- package/dist/web/index.html +2 -2
- package/docs/command-reference.md +2 -0
- package/package.json +1 -1
- package/dist/web/assets/MainPane-B2kcZpM0.js +0 -6
- package/dist/web/assets/SettingsView-BZkrIOc0.css +0 -1
- package/dist/web/assets/SettingsView-DWWs9gel.js +0 -6
- package/dist/web/assets/TeamChatView-C4RWAO8c.js +0 -3
- package/dist/web/assets/index-C9-OtZl8.js +0 -1
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
truncatePatch,
|
|
12
12
|
uniqueSortedPaths,
|
|
13
13
|
workspaceImageContentType
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-66KQLYSH.js";
|
|
15
15
|
import {
|
|
16
16
|
AGENT_PROTOCOL_VERSION,
|
|
17
17
|
AGENT_RPC_METHODS,
|
|
@@ -35,13 +35,13 @@ import {
|
|
|
35
35
|
event,
|
|
36
36
|
now,
|
|
37
37
|
textFromUnknown
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-7IFPXSSJ.js";
|
|
39
39
|
import {
|
|
40
40
|
getBundledRuntimeVersion,
|
|
41
41
|
loadOpenPondAccountContext,
|
|
42
42
|
loadOpenPondHostedModels,
|
|
43
43
|
streamOpenPondHostedChatTurn
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-IXA5PMXC.js";
|
|
45
45
|
import {
|
|
46
46
|
AppPreferencesSchema,
|
|
47
47
|
ApplyCreateImproveRunActionRequestSchema,
|
|
@@ -76,6 +76,7 @@ import {
|
|
|
76
76
|
CrossSystemWorldSpecSchema,
|
|
77
77
|
DEFAULT_CODEX_CHAT_MODEL,
|
|
78
78
|
DEFAULT_CODEX_REASONING_EFFORT,
|
|
79
|
+
DEFAULT_HARNESS_REFINER_MODEL,
|
|
79
80
|
DEFAULT_OPENPOND_CHAT_MODEL,
|
|
80
81
|
DEFAULT_OPENPOND_COMMAND_ACCESS_MODE,
|
|
81
82
|
DEFAULT_PERSONALIZATION_TEMPLATE_ID,
|
|
@@ -161,7 +162,7 @@ import {
|
|
|
161
162
|
runProfileSkillCommand,
|
|
162
163
|
sidebarFileBookmarkId,
|
|
163
164
|
workOutputMediaTypesCompatible
|
|
164
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-KGU437HZ.js";
|
|
165
166
|
import {
|
|
166
167
|
PROJECT_ACTION_CONFIG_PATH,
|
|
167
168
|
createLocalActionRunner,
|
|
@@ -270,7 +271,7 @@ import {
|
|
|
270
271
|
uniqueEventRefs,
|
|
271
272
|
validateConnectedAppProviderOperationRequest,
|
|
272
273
|
verifyRequiredOutputs
|
|
273
|
-
} from "./chunk-
|
|
274
|
+
} from "./chunk-JTFDOA2P.js";
|
|
274
275
|
import {
|
|
275
276
|
external_exports
|
|
276
277
|
} from "./chunk-WYDVQOBL.js";
|
|
@@ -281,7 +282,7 @@ import {
|
|
|
281
282
|
normalizeSandboxApiUrl,
|
|
282
283
|
readApiJson,
|
|
283
284
|
withVercelProtectionBypass
|
|
284
|
-
} from "./chunk-
|
|
285
|
+
} from "./chunk-JGOP4GCK.js";
|
|
285
286
|
import {
|
|
286
287
|
__commonJS,
|
|
287
288
|
__toESM
|
|
@@ -7914,7 +7915,6 @@ async function loadLocalHarnessRuntimeFromRelease(input) {
|
|
|
7914
7915
|
}))
|
|
7915
7916
|
);
|
|
7916
7917
|
const skills = [];
|
|
7917
|
-
const skillContexts = [];
|
|
7918
7918
|
const readers = /* @__PURE__ */ new Map();
|
|
7919
7919
|
for (const asset3 of release.agentSnapshot.skills) {
|
|
7920
7920
|
const markdown = await readVerifiedAsset(sourceRoot, asset3.path, asset3.contentHash);
|
|
@@ -7941,11 +7941,6 @@ async function loadLocalHarnessRuntimeFromRelease(input) {
|
|
|
7941
7941
|
resourceFiles
|
|
7942
7942
|
};
|
|
7943
7943
|
skills.push(skill);
|
|
7944
|
-
skillContexts.push([
|
|
7945
|
-
`Harness Skill (${asset3.path}, ${parsed.name}):`,
|
|
7946
|
-
parsed.description,
|
|
7947
|
-
parsed.body.trim()
|
|
7948
|
-
].filter(Boolean).join("\n"));
|
|
7949
7944
|
readers.set(skill.name, async () => {
|
|
7950
7945
|
const currentMarkdown = await readVerifiedAsset(sourceRoot, asset3.path, asset3.contentHash);
|
|
7951
7946
|
const current = parseProfileSkillMarkdown(currentMarkdown);
|
|
@@ -7974,20 +7969,10 @@ async function loadLocalHarnessRuntimeFromRelease(input) {
|
|
|
7974
7969
|
return read();
|
|
7975
7970
|
} : null
|
|
7976
7971
|
};
|
|
7977
|
-
const agents = await Promise.all(
|
|
7978
|
-
release.agentSnapshot.agents.map(async (asset3) => ({
|
|
7979
|
-
path: asset3.path,
|
|
7980
|
-
content: await readVerifiedAsset(sourceRoot, asset3.path, asset3.contentHash)
|
|
7981
|
-
}))
|
|
7982
|
-
);
|
|
7983
7972
|
const instructionSections = instructions.sort((left, right) => left.path.localeCompare(right.path)).map(({ path: instructionPath, content }) => [
|
|
7984
|
-
`Harness instruction (${instructionPath}):`,
|
|
7973
|
+
`Active Harness instruction (${instructionPath}):`,
|
|
7985
7974
|
content.trim()
|
|
7986
7975
|
].join("\n")).filter((content) => content.trim().length > 0);
|
|
7987
|
-
const agentSections = agents.sort((left, right) => left.path.localeCompare(right.path)).map(({ path: agentPath, content }) => [
|
|
7988
|
-
`Harness Agent (${agentPath}):`,
|
|
7989
|
-
content.trim()
|
|
7990
|
-
].join("\n"));
|
|
7991
7976
|
const capabilityReceipt = [
|
|
7992
7977
|
"Harness capability receipt:",
|
|
7993
7978
|
JSON.stringify({
|
|
@@ -8010,11 +7995,14 @@ async function loadLocalHarnessRuntimeFromRelease(input) {
|
|
|
8010
7995
|
})
|
|
8011
7996
|
].join("\n");
|
|
8012
7997
|
const instructionContext = [
|
|
8013
|
-
|
|
8014
|
-
|
|
8015
|
-
|
|
8016
|
-
|
|
8017
|
-
|
|
7998
|
+
capabilityReceipt,
|
|
7999
|
+
instructionSections.length > 0 ? [
|
|
8000
|
+
"Active Harness preflight:",
|
|
8001
|
+
"Apply the following released instructions when planning work and immediately before every tool call.",
|
|
8002
|
+
"Preflight each call: (1) identify any active instruction that matches the planned operation, (2) inspect the exact tool arguments for a forbidden pattern, and (3) rewrite the call before sending it when a pattern matches. Compliance is required even when the prohibited call might still succeed.",
|
|
8003
|
+
...instructionSections
|
|
8004
|
+
].join("\n\n") : null
|
|
8005
|
+
].filter((content) => Boolean(content?.trim())).join("\n\n");
|
|
8018
8006
|
return { workspace, release, instructionContext, skillRuntime };
|
|
8019
8007
|
}
|
|
8020
8008
|
async function readVerifiedAsset(sourceRoot, relativePath, expectedHash) {
|
|
@@ -8165,12 +8153,24 @@ var MAX_REVIEW_TIMELINE_CHARS = 24e3;
|
|
|
8165
8153
|
var MAX_PRIOR_CONVERSATION_TURNS = 3;
|
|
8166
8154
|
var MAX_PRIOR_INCIDENTS = 3;
|
|
8167
8155
|
var MAX_PRIOR_INCIDENT_TIMELINE_EVENTS = 6;
|
|
8156
|
+
var REFINER_CONTEXT_EVENT_NAMES = [
|
|
8157
|
+
"turn.started",
|
|
8158
|
+
"assistant.delta",
|
|
8159
|
+
"tool.started",
|
|
8160
|
+
"tool.completed",
|
|
8161
|
+
"skill.loaded",
|
|
8162
|
+
"workspace_action_result",
|
|
8163
|
+
"diagnostic",
|
|
8164
|
+
"turn.completed",
|
|
8165
|
+
"turn.failed",
|
|
8166
|
+
"turn.interrupted"
|
|
8167
|
+
];
|
|
8168
8168
|
var execFileAsync = promisify(execFile);
|
|
8169
8169
|
async function loadBoundedRefinerContext(store, trigger, observations, workspaceId, options) {
|
|
8170
8170
|
const [session, turn, events, turns, usageRecords] = await Promise.all([
|
|
8171
8171
|
store.getSession(trigger.runRef),
|
|
8172
8172
|
store.getTurn(trigger.turnId),
|
|
8173
|
-
store.
|
|
8173
|
+
store.runtimeEventsForTurn(trigger.turnId, { names: REFINER_CONTEXT_EVENT_NAMES }),
|
|
8174
8174
|
store.turnsForSession(trigger.runRef, 1e3),
|
|
8175
8175
|
store.listModelUsageRecords({ turnId: trigger.turnId, limit: 1e4 })
|
|
8176
8176
|
]);
|
|
@@ -8179,6 +8179,18 @@ async function loadBoundedRefinerContext(store, trigger, observations, workspace
|
|
|
8179
8179
|
);
|
|
8180
8180
|
const turnIndex = orderedTurns.findIndex((candidate) => candidate.id === trigger.turnId);
|
|
8181
8181
|
const previousTurn = turnIndex > 0 ? orderedTurns[turnIndex - 1] : null;
|
|
8182
|
+
const priorConversationTurns = orderedTurns.slice(
|
|
8183
|
+
Math.max(0, turnIndex - MAX_PRIOR_CONVERSATION_TURNS),
|
|
8184
|
+
Math.max(0, turnIndex)
|
|
8185
|
+
);
|
|
8186
|
+
const priorConversationEvents = new Map(
|
|
8187
|
+
await Promise.all(
|
|
8188
|
+
priorConversationTurns.map(async (candidate) => [
|
|
8189
|
+
candidate.id,
|
|
8190
|
+
await store.runtimeEventsForTurn(candidate.id, { names: ["assistant.delta"] })
|
|
8191
|
+
])
|
|
8192
|
+
)
|
|
8193
|
+
);
|
|
8182
8194
|
const eventRefs = new Map(
|
|
8183
8195
|
observations.flatMap(
|
|
8184
8196
|
(observation) => observation.eventRefs.map((reference) => [reference.id, reference])
|
|
@@ -8235,7 +8247,9 @@ async function loadBoundedRefinerContext(store, trigger, observations, workspace
|
|
|
8235
8247
|
(runtimeEvent) => runtimeEvent.turnId === trigger.turnId && isRefinerReviewTimelineEvent(runtimeEvent) && (runtimeEvent.sequence === void 0 || runtimeEvent.sequence <= trigger.boundary.eventSequence)
|
|
8236
8248
|
).sort(compareRuntimeEvents);
|
|
8237
8249
|
const timeline = boundedReviewTimeline(timelineCandidates);
|
|
8238
|
-
const priorConversation =
|
|
8250
|
+
const priorConversation = priorConversationTurns.map(
|
|
8251
|
+
(candidate) => conversationTurn(candidate, priorConversationEvents.get(candidate.id) ?? [])
|
|
8252
|
+
);
|
|
8239
8253
|
const priorIncidents = workspaceId ? await loadRelevantPriorIncidentPackets({
|
|
8240
8254
|
store,
|
|
8241
8255
|
workspaceId,
|
|
@@ -8247,7 +8261,10 @@ async function loadBoundedRefinerContext(store, trigger, observations, workspace
|
|
|
8247
8261
|
prompt: turn?.prompt ? redactAndBoundRefinerText(turn.prompt, 8e3) : null,
|
|
8248
8262
|
assistantOutput,
|
|
8249
8263
|
assistantOutputLinkCount: countAbsoluteLinks(assistantOutput),
|
|
8250
|
-
previousAssistantOutput: previousTurn ? assistantOutputForTurn(
|
|
8264
|
+
previousAssistantOutput: previousTurn ? assistantOutputForTurn(
|
|
8265
|
+
priorConversationEvents.get(previousTurn.id) ?? [],
|
|
8266
|
+
previousTurn.id
|
|
8267
|
+
) : null
|
|
8251
8268
|
},
|
|
8252
8269
|
artifactDiagnostics,
|
|
8253
8270
|
executionProfile,
|
|
@@ -8412,7 +8429,7 @@ async function loadRelevantPriorIncidentPackets(input) {
|
|
|
8412
8429
|
const first = group[0];
|
|
8413
8430
|
const [turn, events] = await Promise.all([
|
|
8414
8431
|
input.store.getTurn(first.turnId),
|
|
8415
|
-
input.store.
|
|
8432
|
+
input.store.runtimeEventsForTurn(first.turnId, { names: REFINER_CONTEXT_EVENT_NAMES })
|
|
8416
8433
|
]);
|
|
8417
8434
|
if (!turn) continue;
|
|
8418
8435
|
const matchingClasses = [...new Set(group.flatMap(
|
|
@@ -8646,8 +8663,10 @@ async function loadExactObservations(store, workspaceId, trigger) {
|
|
|
8646
8663
|
return observation;
|
|
8647
8664
|
});
|
|
8648
8665
|
}
|
|
8649
|
-
async function readBoundedRefinerSource(bundlePath, trigger) {
|
|
8666
|
+
async function readBoundedRefinerSource(bundlePath, trigger, options = {}) {
|
|
8650
8667
|
const loadedSkillNames = loadedSkillNamesFromTrigger(trigger);
|
|
8668
|
+
const sourceWasAdmitted = options.forceUnloaded !== true;
|
|
8669
|
+
const wasLoaded = (kind, filePath) => sourceWasAdmitted && (kind === "instruction" || kind === "skill" && loadedSkillNames.has(skillNameFromPath(filePath)));
|
|
8651
8670
|
const sourceRoot = path7.resolve(bundlePath, "source");
|
|
8652
8671
|
const manifest = HarnessSourceManifestSchema.parse(
|
|
8653
8672
|
JSON.parse(await fs6.readFile(path7.join(sourceRoot, "harness.json"), "utf8"))
|
|
@@ -8659,11 +8678,11 @@ async function readBoundedRefinerSource(bundlePath, trigger) {
|
|
|
8659
8678
|
).map((file) => ({
|
|
8660
8679
|
path: file.path,
|
|
8661
8680
|
kind: file.kind,
|
|
8662
|
-
loaded: file.kind
|
|
8681
|
+
loaded: wasLoaded(file.kind, file.path)
|
|
8663
8682
|
}));
|
|
8664
8683
|
const rankedFiles = manifest.files.slice().sort((left, right) => {
|
|
8665
|
-
const leftLoaded =
|
|
8666
|
-
const rightLoaded =
|
|
8684
|
+
const leftLoaded = ["instruction", "skill", "agent"].includes(left.kind) && wasLoaded(left.kind, left.path);
|
|
8685
|
+
const rightLoaded = ["instruction", "skill", "agent"].includes(right.kind) && wasLoaded(right.kind, right.path);
|
|
8667
8686
|
if (leftLoaded !== rightLoaded) return leftLoaded ? -1 : 1;
|
|
8668
8687
|
const rank = (kind) => kind === "instruction" ? 0 : kind === "skill" ? 1 : 2;
|
|
8669
8688
|
return rank(left.kind) - rank(right.kind) || left.path.localeCompare(right.path);
|
|
@@ -8681,7 +8700,7 @@ async function readBoundedRefinerSource(bundlePath, trigger) {
|
|
|
8681
8700
|
path: file.path,
|
|
8682
8701
|
kind: file.kind,
|
|
8683
8702
|
content: bytes.toString("utf8"),
|
|
8684
|
-
loaded: file.kind
|
|
8703
|
+
loaded: wasLoaded(file.kind, file.path)
|
|
8685
8704
|
});
|
|
8686
8705
|
remaining -= bytes.byteLength;
|
|
8687
8706
|
}
|
|
@@ -9282,6 +9301,33 @@ function withoutHash(candidate) {
|
|
|
9282
9301
|
return content;
|
|
9283
9302
|
}
|
|
9284
9303
|
|
|
9304
|
+
// ../server/src/harness/local-harness-refiner-release-context.ts
|
|
9305
|
+
async function loadRefinerReleaseContext(input) {
|
|
9306
|
+
const effectiveReleaseRef = input.rebasedOntoCurrent ? input.workspace.currentChannel.release : input.overlay.baseHarnessRelease;
|
|
9307
|
+
if (!effectiveReleaseRef) {
|
|
9308
|
+
throw new Error("Queued Refiner trigger references a Harness workspace without a current release.");
|
|
9309
|
+
}
|
|
9310
|
+
const release = await input.store.getHarnessReleaseRecord(
|
|
9311
|
+
effectiveReleaseRef.contentHash
|
|
9312
|
+
);
|
|
9313
|
+
if (!release || release.harnessRelease.id !== effectiveReleaseRef.id || release.workspaceId !== input.workspace.id) {
|
|
9314
|
+
throw new Error("Queued Refiner trigger references an unavailable effective Harness release.");
|
|
9315
|
+
}
|
|
9316
|
+
const source = await readBoundedRefinerSource(
|
|
9317
|
+
release.bundlePath,
|
|
9318
|
+
input.trigger,
|
|
9319
|
+
{ forceUnloaded: input.rebasedOntoCurrent }
|
|
9320
|
+
);
|
|
9321
|
+
const admittedRelease = input.rebasedOntoCurrent ? await input.store.getHarnessReleaseRecord(
|
|
9322
|
+
input.overlay.baseHarnessRelease.contentHash
|
|
9323
|
+
) : release;
|
|
9324
|
+
if (!admittedRelease || admittedRelease.harnessRelease.id !== input.overlay.baseHarnessRelease.id || admittedRelease.workspaceId !== input.workspace.id) {
|
|
9325
|
+
throw new Error("Queued Refiner trigger references an unavailable admitted Harness release.");
|
|
9326
|
+
}
|
|
9327
|
+
const admittedSource = input.rebasedOntoCurrent ? await readBoundedRefinerSource(admittedRelease.bundlePath, input.trigger) : source;
|
|
9328
|
+
return { admittedSource, effectiveReleaseRef, release, source };
|
|
9329
|
+
}
|
|
9330
|
+
|
|
9285
9331
|
// ../server/src/harness/local-harness-refiner-worker-support.ts
|
|
9286
9332
|
async function findRefinerOutcome(store, workspaceId, trigger) {
|
|
9287
9333
|
const outcomes = await store.listHarnessImprovementArtifacts(
|
|
@@ -9399,20 +9445,13 @@ async function executeLocalHarnessRefinerWorker(input) {
|
|
|
9399
9445
|
now: input.now
|
|
9400
9446
|
});
|
|
9401
9447
|
}
|
|
9402
|
-
const effectiveReleaseRef
|
|
9403
|
-
|
|
9404
|
-
|
|
9405
|
-
|
|
9406
|
-
|
|
9407
|
-
|
|
9408
|
-
);
|
|
9409
|
-
if (!release || release.harnessRelease.id !== effectiveReleaseRef.id || release.workspaceId !== workspace.id) {
|
|
9410
|
-
throw new Error("Queued Refiner trigger references an unavailable effective Harness release.");
|
|
9411
|
-
}
|
|
9412
|
-
const source = await readBoundedRefinerSource(
|
|
9413
|
-
release.bundlePath,
|
|
9414
|
-
trigger
|
|
9415
|
-
);
|
|
9448
|
+
const { admittedSource, effectiveReleaseRef, release, source } = await loadRefinerReleaseContext({
|
|
9449
|
+
store: input.store,
|
|
9450
|
+
workspace,
|
|
9451
|
+
overlay,
|
|
9452
|
+
trigger,
|
|
9453
|
+
rebasedOntoCurrent
|
|
9454
|
+
});
|
|
9416
9455
|
const memorySource = (await input.store.listHarnessMemories(workspace.id)).slice(0, 100).map((entry) => ({
|
|
9417
9456
|
path: `memory/${entry.key}`,
|
|
9418
9457
|
kind: "memory",
|
|
@@ -9434,11 +9473,25 @@ async function executeLocalHarnessRefinerWorker(input) {
|
|
|
9434
9473
|
skill: true,
|
|
9435
9474
|
agent: false
|
|
9436
9475
|
};
|
|
9476
|
+
const admissibleEvidenceIds = [
|
|
9477
|
+
...observations.map((observation) => observation.id),
|
|
9478
|
+
...boundedContext.reviewPacket.priorIncidents.flatMap(
|
|
9479
|
+
(incident) => typeof incident.id === "string" && incident.id.trim() ? [incident.id.trim()] : []
|
|
9480
|
+
)
|
|
9481
|
+
];
|
|
9437
9482
|
const refinerEvidence = {
|
|
9438
9483
|
capabilities,
|
|
9439
9484
|
trigger: boundedTriggerEvidence(trigger),
|
|
9440
9485
|
observations: observations.map(boundedObservationEvidence),
|
|
9486
|
+
admissibleEvidenceIds,
|
|
9441
9487
|
reviewPacket: boundedContext.reviewPacket,
|
|
9488
|
+
runtimeActivation: {
|
|
9489
|
+
admittedRelease: overlay.baseHarnessRelease,
|
|
9490
|
+
currentRelease: effectiveReleaseRef,
|
|
9491
|
+
rebasedOntoCurrent,
|
|
9492
|
+
admittedSourceFiles: admittedSource.files,
|
|
9493
|
+
admittedSourceCatalog: admittedSource.catalog
|
|
9494
|
+
},
|
|
9442
9495
|
sourceFiles: source.files,
|
|
9443
9496
|
sourceCatalog: source.catalog,
|
|
9444
9497
|
additionalEvidence: input.additionalEvidence ?? null
|
|
@@ -12979,6 +13032,15 @@ function errorType(error) {
|
|
|
12979
13032
|
}
|
|
12980
13033
|
|
|
12981
13034
|
// ../server/src/harness/local-harness-improvement-observer.ts
|
|
13035
|
+
var HARNESS_IMPROVEMENT_EVENT_NAMES = [
|
|
13036
|
+
"turn.started",
|
|
13037
|
+
"tool.started",
|
|
13038
|
+
"tool.completed",
|
|
13039
|
+
"skill.loaded",
|
|
13040
|
+
"turn.completed",
|
|
13041
|
+
"turn.failed",
|
|
13042
|
+
"turn.interrupted"
|
|
13043
|
+
];
|
|
12982
13044
|
async function recordLocalHarnessImprovementBoundary(input) {
|
|
12983
13045
|
const snapshot = input.turn.harnessSnapshot;
|
|
12984
13046
|
if (!snapshot) return null;
|
|
@@ -12986,9 +13048,9 @@ async function recordLocalHarnessImprovementBoundary(input) {
|
|
|
12986
13048
|
if (!workspace || workspace.location !== "local") return null;
|
|
12987
13049
|
const backgroundReview = await input.store.getHarnessBackgroundReviewSettings(workspace.id);
|
|
12988
13050
|
if (!backgroundReview.enabled) return null;
|
|
12989
|
-
const events =
|
|
12990
|
-
|
|
12991
|
-
})
|
|
13051
|
+
const events = await input.store.runtimeEventsForTurn(input.turn.id, {
|
|
13052
|
+
names: HARNESS_IMPROVEMENT_EVENT_NAMES
|
|
13053
|
+
});
|
|
12992
13054
|
const eventSequence = events.reduce(
|
|
12993
13055
|
(latest, runtimeEvent) => Math.max(latest, runtimeEvent.sequence ?? 0),
|
|
12994
13056
|
0
|
|
@@ -13259,7 +13321,7 @@ function createLocalHarnessImprovementRuntime(input) {
|
|
|
13259
13321
|
session: boundary.session,
|
|
13260
13322
|
turn: boundary.turn,
|
|
13261
13323
|
provider: "openpond",
|
|
13262
|
-
model:
|
|
13324
|
+
model: DEFAULT_HARNESS_REFINER_MODEL,
|
|
13263
13325
|
requestId,
|
|
13264
13326
|
requestOrdinal: ordinal,
|
|
13265
13327
|
requestKind: "harness_refiner",
|
|
@@ -13267,7 +13329,7 @@ function createLocalHarnessImprovementRuntime(input) {
|
|
|
13267
13329
|
});
|
|
13268
13330
|
try {
|
|
13269
13331
|
for await (const delta of input.streamOpenPondHostedChatTurn({
|
|
13270
|
-
model:
|
|
13332
|
+
model: DEFAULT_HARNESS_REFINER_MODEL,
|
|
13271
13333
|
messages,
|
|
13272
13334
|
requestId,
|
|
13273
13335
|
reasoningEffort: "low",
|
|
@@ -16021,6 +16083,7 @@ function createSandboxAgentNamespace(client) {
|
|
|
16021
16083
|
sourceDeployPlan: (agentId, input) => client.getAgentSourceDeployPlan(agentId, input),
|
|
16022
16084
|
manifestSnapshots: (agentId, input) => client.listAgentManifestSnapshots(agentId, input),
|
|
16023
16085
|
requestSourceChecks: (agentId, input) => client.requestAgentSourceChecks(agentId, input),
|
|
16086
|
+
configureSourceSetup: (agentId, input) => client.configureAgentSourceSetup(agentId, input),
|
|
16024
16087
|
publishSource: (agentId, input) => client.publishAgentSource(agentId, input)
|
|
16025
16088
|
};
|
|
16026
16089
|
}
|
|
@@ -17251,6 +17314,11 @@ var OpenPondSandboxClient = class extends OpenPondSandboxInstanceClient {
|
|
|
17251
17314
|
timeoutMs: 15 * 60 * 1e3
|
|
17252
17315
|
});
|
|
17253
17316
|
}
|
|
17317
|
+
configureAgentSourceSetup(agentId, input) {
|
|
17318
|
+
const query = new URLSearchParams({ teamId: input.teamId });
|
|
17319
|
+
const { teamId: _teamId, ...body } = input;
|
|
17320
|
+
return this.requestApiRoot(`/agents/${encodeURIComponent(agentId)}/source/setup?${query.toString()}`, { method: "POST", body: JSON.stringify(body) });
|
|
17321
|
+
}
|
|
17254
17322
|
publishAgentSource(agentId, input) {
|
|
17255
17323
|
const query = new URLSearchParams({ teamId: input.teamId });
|
|
17256
17324
|
const { teamId: _teamId, ...body } = input;
|
|
@@ -24122,7 +24190,7 @@ import { randomUUID as randomUUID7 } from "node:crypto";
|
|
|
24122
24190
|
function createLocalHarnessEvaluationReviewModelStream(streamOpenPondHostedChatTurn2) {
|
|
24123
24191
|
return async function* ({ messages, signal }) {
|
|
24124
24192
|
for await (const delta of streamOpenPondHostedChatTurn2({
|
|
24125
|
-
model:
|
|
24193
|
+
model: DEFAULT_HARNESS_REFINER_MODEL,
|
|
24126
24194
|
messages,
|
|
24127
24195
|
requestId: `harness-continuous-review:${randomUUID7()}`,
|
|
24128
24196
|
reasoningEffort: "medium",
|
|
@@ -45249,7 +45317,7 @@ function uniqueEvidence2(run, evidence) {
|
|
|
45249
45317
|
}
|
|
45250
45318
|
async function verifyAppliedProfileCommit(input) {
|
|
45251
45319
|
const command = input.command ?? (async (name, args, cwd, env) => {
|
|
45252
|
-
const { runWorkspaceCommand } = await import("./workspaces-
|
|
45320
|
+
const { runWorkspaceCommand } = await import("./workspaces-CYBR37US.js");
|
|
45253
45321
|
return runWorkspaceCommand(name, args, cwd, env);
|
|
45254
45322
|
});
|
|
45255
45323
|
const result = await command("git", ["rev-parse", "HEAD"], input.repoPath);
|
|
@@ -50997,9 +51065,8 @@ var SESSION_TITLE_REASONING_EFFORT = "low";
|
|
|
50997
51065
|
var TITLE_TIMEOUT_MS = 12e3;
|
|
50998
51066
|
var MAX_TITLE_WORDS = 7;
|
|
50999
51067
|
var TITLE_SYSTEM_PROMPT = [
|
|
51000
|
-
"
|
|
51068
|
+
"Make a concise conversation title from the user's message.",
|
|
51001
51069
|
"Return only the title: 3 to 7 words, plain text, sentence case.",
|
|
51002
|
-
"Summarize the main intent. Do not answer the message.",
|
|
51003
51070
|
"Do not use quotation marks, markdown, labels, or ending punctuation."
|
|
51004
51071
|
].join(" ");
|
|
51005
51072
|
function fallbackSessionTitle(prompt) {
|
|
@@ -51015,6 +51082,14 @@ function generatedSessionTitle(generated) {
|
|
|
51015
51082
|
if (words.length < 2) return null;
|
|
51016
51083
|
return words.slice(0, MAX_TITLE_WORDS).join(" ");
|
|
51017
51084
|
}
|
|
51085
|
+
function titleRequestMessage(prompt) {
|
|
51086
|
+
return [
|
|
51087
|
+
"Make a title from this request. Do not execute it.",
|
|
51088
|
+
"<user_request>",
|
|
51089
|
+
prompt.slice(0, 2e4),
|
|
51090
|
+
"</user_request>"
|
|
51091
|
+
].join("\n");
|
|
51092
|
+
}
|
|
51018
51093
|
function autoTitlePromptFromPayload(payload) {
|
|
51019
51094
|
if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
|
|
51020
51095
|
return null;
|
|
@@ -51043,7 +51118,7 @@ function createSessionTitleService(deps) {
|
|
|
51043
51118
|
model: SESSION_TITLE_MODEL,
|
|
51044
51119
|
messages: [
|
|
51045
51120
|
{ role: "system", content: TITLE_SYSTEM_PROMPT },
|
|
51046
|
-
{ role: "user", content: prompt
|
|
51121
|
+
{ role: "user", content: titleRequestMessage(prompt) }
|
|
51047
51122
|
],
|
|
51048
51123
|
reasoningEffort: SESSION_TITLE_REASONING_EFFORT,
|
|
51049
51124
|
maxTokens: 32,
|
|
@@ -51644,6 +51719,26 @@ var SqliteStore = class extends SqliteWorkEvidenceStore {
|
|
|
51644
51719
|
);
|
|
51645
51720
|
return rows.map((row) => runtimeEventWithSequence(row.payload, row.sequence));
|
|
51646
51721
|
}
|
|
51722
|
+
async runtimeEventsForTurn(turnId, query = {}) {
|
|
51723
|
+
await this.ready;
|
|
51724
|
+
await this.writeQueue;
|
|
51725
|
+
const where = ["turn_id = ?"];
|
|
51726
|
+
const params = [turnId];
|
|
51727
|
+
if (query.names && query.names.length > 0) {
|
|
51728
|
+
where.push(`name IN (${query.names.map(() => "?").join(", ")})`);
|
|
51729
|
+
params.push(...query.names);
|
|
51730
|
+
}
|
|
51731
|
+
const limit = query.limit === void 0 || query.limit === null ? null : Math.max(1, Math.min(1e5, Math.trunc(query.limit)));
|
|
51732
|
+
if (limit !== null) params.push(limit);
|
|
51733
|
+
const rows = await this.all(
|
|
51734
|
+
`SELECT sequence, payload FROM events
|
|
51735
|
+
WHERE ${where.join(" AND ")}
|
|
51736
|
+
ORDER BY sequence ASC
|
|
51737
|
+
${limit === null ? "" : "LIMIT ?"}`,
|
|
51738
|
+
params
|
|
51739
|
+
);
|
|
51740
|
+
return rows.map((row) => runtimeEventWithSequence(row.payload, row.sequence));
|
|
51741
|
+
}
|
|
51647
51742
|
async persistedRuntimeEventsForSession(sessionId, query = {}) {
|
|
51648
51743
|
await this.ready;
|
|
51649
51744
|
const where = ["session_id = ?"];
|