eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 2.88 kB
JavaScript
import{resolveSelfModificationConfig}from"../../config.js";import{createGitHubCredentialProvider}from"../../credentials.js";import{resolveSelfModificationMode}from"../../mode.js";import extension_default from"../extension.js";import{readPreparedSelfModificationWorkspace}from"../../git-workspace.js";import{publishGitHubDraftPullRequest}from"../../github-publisher.js";import{withSelfModificationWorkspaceLock}from"../../workspace-lock.js";import{defineDynamic,defineTool}from"eve/tools";const inputSchema={type:`object`,additionalProperties:!1,properties:{summary:{type:`string`,minLength:1,maxLength:1e4,description:`Concise description of the proposed agent source change.`},title:{type:`string`,minLength:1,maxLength:256,description:`Concise draft pull request title.`}},required:[`summary`,`title`]},outputSchema={type:`object`,additionalProperties:!1,properties:{branch:{type:`string`},changedPaths:{type:`array`,items:{type:`string`}},commitSha:{type:`string`},deployed:{type:`boolean`,const:!1},draft:{type:`boolean`,const:!0},merged:{type:`boolean`,const:!1},pullRequestUrl:{type:`string`},repository:{type:`string`},targetBranch:{type:`string`}},required:[`branch`,`changedPaths`,`commitSha`,`deployed`,`draft`,`merged`,`pullRequestUrl`,`repository`,`targetBranch`]};function resolveTool(){let e=resolveSelfModificationConfig(extension_default.config);return resolveSelfModificationMode(e)!==`deployed`||e.deployed===void 0?null:defineTool({description:`Publish the complete validated agent source change as one draft pull request. Merge and deployment do not occur.`,inputSchema,outputSchema,execute:publish})}async function publish(e,t){if(typeof e!=`object`||!e||!(`summary`in e)||typeof e.summary!=`string`||e.summary.trim().length===0||!(`title`in e)||typeof e.title!=`string`||e.title.trim().length===0)throw Error(`Production publication requires a valid title and summary.`);let n=resolveSelfModificationConfig(extension_default.config);if(resolveSelfModificationMode(n)!==`deployed`||n.deployed===void 0)throw Error(`Production publication requires deployed self-modification configuration.`);let r=n.deployed,i=e.summary,a=e.title,o=publicationOperationId(t),s=await t.getSandbox();return await withSelfModificationWorkspaceLock(`sandbox:${s.id}`,async()=>{let e=await readPreparedSelfModificationWorkspace({...r,sandbox:s});return await publishGitHubDraftPullRequest({credentialProvider:createGitHubCredentialProvider(r.credentials),description:i,operationId:o,sandbox:s,title:a,workspace:e})})}function publicationOperationId(e){let t=e.session.parent;if(t===void 0)throw Error(`Production publication requires a delegated child session.`);return`${t.rootSessionId}:${t.sessionId}:${t.turn.id}:${t.callId}:${e.session.id}`}var publish_default=defineDynamic({events:{"session.started":resolveTool}});export{publish_default as default,publicationOperationId};