overlane 0.1.126 → 0.1.127
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/overlane.mjs +147 -1
- package/package.json +1 -1
- package/plugins/claude/plugins/mvrx-harness/.claude-plugin/plugin.json +1 -1
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-context.mjs +28 -28
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-guard.mjs +24 -24
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-intake.mjs +31 -31
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-quota.mjs +29 -29
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-statusline.mjs +25 -25
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-stop.mjs +29 -29
- package/plugins/codex/plugins/mvrx-harness/.codex-plugin/plugin.json +1 -1
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-context.mjs +28 -28
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-guard.mjs +24 -24
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-intake.mjs +31 -31
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-quota.mjs +29 -29
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-statusline.mjs +25 -25
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-stop.mjs +29 -29
- package/plugins/release-manifest.json +20 -20
package/dist/overlane.mjs
CHANGED
|
@@ -23358,6 +23358,151 @@ var init_code_map = __esm({
|
|
|
23358
23358
|
}
|
|
23359
23359
|
});
|
|
23360
23360
|
|
|
23361
|
+
// ../contracts/src/agent.ts
|
|
23362
|
+
function classifyMethod(method) {
|
|
23363
|
+
const m = method.toUpperCase();
|
|
23364
|
+
return m === "GET" || m === "HEAD" || m === "OPTIONS" ? "read" : "write";
|
|
23365
|
+
}
|
|
23366
|
+
function blockedClassFor(op) {
|
|
23367
|
+
const words = op.operationId.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
23368
|
+
const text = `${op.path.toLowerCase()} ${words}`;
|
|
23369
|
+
if (op.method.toUpperCase() === "DELETE" || DESTRUCTIVE.test(text)) return "destructive";
|
|
23370
|
+
if (BILLING.test(text)) return "billing";
|
|
23371
|
+
if (SECRETS.test(text)) return "secrets";
|
|
23372
|
+
return null;
|
|
23373
|
+
}
|
|
23374
|
+
var AGENT_PLANS, AgentPlan, AGENT_PROVIDERS, AgentProvider, TOOL_CLASSES, AgentToolClass, BLOCKED_CLASSES, BlockedClass, BILLING, SECRETS, DESTRUCTIVE, AgentOperation, AgentToolDefinition, AGENT_REFUSAL_CODES, AgentRefusalCode, AgentRefusal, AgentDiffEntry, APPROVAL_STATES, AgentApprovalState, AgentInverseChange, AgentApproval, AgentWriteToolResult, AgentReadToolResult, AgentToolResult, AgentCitation, MESSAGE_ORIGINS, AgentMessageOrigin, AgentMessage, AgentChatRequest, AgentFeedback, AGENT_AUDIT_RESULTS, AgentAuditResult, AgentAuditEvent, AgentReadOnlyMode, RouteIndexEntry, RouteIndex, AgentRouteHit;
|
|
23375
|
+
var init_agent = __esm({
|
|
23376
|
+
"../contracts/src/agent.ts"() {
|
|
23377
|
+
"use strict";
|
|
23378
|
+
init_zod();
|
|
23379
|
+
init_common();
|
|
23380
|
+
init_identity();
|
|
23381
|
+
AGENT_PLANS = ["free", "pro", "team", "business", "enterprise"];
|
|
23382
|
+
AgentPlan = external_exports.enum(AGENT_PLANS);
|
|
23383
|
+
AGENT_PROVIDERS = ["overlane", "github", "gitlab", "linear", "jira"];
|
|
23384
|
+
AgentProvider = external_exports.enum(AGENT_PROVIDERS);
|
|
23385
|
+
TOOL_CLASSES = ["read", "write"];
|
|
23386
|
+
AgentToolClass = external_exports.enum(TOOL_CLASSES);
|
|
23387
|
+
BLOCKED_CLASSES = ["billing", "secrets", "destructive"];
|
|
23388
|
+
BlockedClass = external_exports.enum(BLOCKED_CLASSES);
|
|
23389
|
+
BILLING = /(^|[\s\/_.-])(billing|invoices?|payments?|subscriptions?|checkout|seats|plan-change)([\s\/_.-]|$)/i;
|
|
23390
|
+
SECRETS = /(^|[\s\/_.-])(secrets?|tokens?|api-?keys?|credentials?|keys|signing|sso|scim)([\s\/_.-]|$)/i;
|
|
23391
|
+
DESTRUCTIVE = /(^|[\s\/_.-])(purge|delete|destroy|erase|wipe|drop|revoke|remove|truncate|reset)([\s\/_.-]|$)/i;
|
|
23392
|
+
AgentOperation = external_exports.object({
|
|
23393
|
+
operationId: external_exports.string().min(1).max(100),
|
|
23394
|
+
method: external_exports.enum(["GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH", "DELETE"]),
|
|
23395
|
+
path: external_exports.string().min(1).max(300).startsWith("/"),
|
|
23396
|
+
/** Where the operation is defined: the OpenAPI document, a contract fixture until the API route exists (REQ-WEB-11), or local code that makes no API call (docs search, navigation). */
|
|
23397
|
+
source: external_exports.enum(["openapi", "contract-fixture", "local"])
|
|
23398
|
+
}).strict();
|
|
23399
|
+
AgentToolDefinition = external_exports.object({
|
|
23400
|
+
tenantId: TenantId,
|
|
23401
|
+
name: external_exports.string().regex(/^[a-z][A-Za-z0-9]{1,48}$/),
|
|
23402
|
+
description: external_exports.string().min(1).max(300),
|
|
23403
|
+
class: AgentToolClass,
|
|
23404
|
+
operation: AgentOperation,
|
|
23405
|
+
/** Lowest role that may call the tool (REQ-AGT-05). The role table in identity.ts still decides per action. */
|
|
23406
|
+
minRole: Role,
|
|
23407
|
+
/** JSON-schema-like description of the arguments, property name to a short hint. */
|
|
23408
|
+
arguments: external_exports.record(external_exports.string().min(1).max(64), external_exports.string().max(200))
|
|
23409
|
+
}).strict().refine((t) => t.class === classifyMethod(t.operation.method), { message: "class must match the HTTP method (REQ-AGT-09)", path: ["class"] }).refine((t) => blockedClassFor(t.operation) === null, { message: "billing, secrets and destructive operations are never tools (REQ-AGT-08)", path: ["operation"] });
|
|
23410
|
+
AGENT_REFUSAL_CODES = [
|
|
23411
|
+
"role_forbidden",
|
|
23412
|
+
"read_only_mode",
|
|
23413
|
+
"blocked_class",
|
|
23414
|
+
"unknown_tool",
|
|
23415
|
+
"invalid_arguments",
|
|
23416
|
+
"approval_required",
|
|
23417
|
+
"approval_expired",
|
|
23418
|
+
"approval_not_pending",
|
|
23419
|
+
"rate_limited",
|
|
23420
|
+
"unavailable"
|
|
23421
|
+
];
|
|
23422
|
+
AgentRefusalCode = external_exports.enum(AGENT_REFUSAL_CODES);
|
|
23423
|
+
AgentRefusal = external_exports.object({ kind: external_exports.literal("refusal"), tenantId: TenantId, code: AgentRefusalCode, tool: external_exports.string().max(100).optional(), reason: external_exports.string().min(1).max(300) }).strict();
|
|
23424
|
+
AgentDiffEntry = external_exports.object({ field: external_exports.string().min(1).max(200), before: external_exports.string().max(2e3).nullable(), after: external_exports.string().max(2e3).nullable() }).strict();
|
|
23425
|
+
APPROVAL_STATES = ["pending", "approved", "executed", "rejected", "expired", "failed"];
|
|
23426
|
+
AgentApprovalState = external_exports.enum(APPROVAL_STATES);
|
|
23427
|
+
AgentInverseChange = external_exports.object({
|
|
23428
|
+
tenantId: TenantId,
|
|
23429
|
+
approvalId: external_exports.string().min(1).max(128),
|
|
23430
|
+
tool: external_exports.string().min(1).max(100),
|
|
23431
|
+
arguments: external_exports.record(external_exports.string(), external_exports.unknown()),
|
|
23432
|
+
summary: external_exports.string().min(1).max(500)
|
|
23433
|
+
}).strict();
|
|
23434
|
+
AgentApproval = external_exports.object({
|
|
23435
|
+
tenantId: TenantId,
|
|
23436
|
+
id: external_exports.string().min(1).max(128),
|
|
23437
|
+
conversationId: external_exports.string().min(1).max(128),
|
|
23438
|
+
requestedBy: UserId,
|
|
23439
|
+
tool: external_exports.string().min(1).max(100),
|
|
23440
|
+
summary: external_exports.string().min(1).max(500),
|
|
23441
|
+
diff: external_exports.array(AgentDiffEntry).max(50),
|
|
23442
|
+
argumentsDigest: Sha256Digest,
|
|
23443
|
+
state: AgentApprovalState,
|
|
23444
|
+
createdAt: Timestamp,
|
|
23445
|
+
expiresAt: Timestamp,
|
|
23446
|
+
decidedAt: Timestamp.optional(),
|
|
23447
|
+
/** Present once executed, when the tool has an inverse. */
|
|
23448
|
+
inverse: AgentInverseChange.optional(),
|
|
23449
|
+
/** Set when this approval is itself the undo of another. */
|
|
23450
|
+
undoOf: external_exports.string().min(1).max(128).optional()
|
|
23451
|
+
}).strict();
|
|
23452
|
+
AgentWriteToolResult = external_exports.object({ kind: external_exports.literal("approval"), tenantId: TenantId, approval: AgentApproval }).strict();
|
|
23453
|
+
AgentReadToolResult = external_exports.object({ kind: external_exports.literal("result"), tenantId: TenantId, tool: external_exports.string().min(1).max(100), data: external_exports.unknown() }).strict();
|
|
23454
|
+
AgentToolResult = external_exports.discriminatedUnion("kind", [AgentWriteToolResult, AgentReadToolResult, AgentRefusal]);
|
|
23455
|
+
AgentCitation = external_exports.object({
|
|
23456
|
+
tenantId: TenantId,
|
|
23457
|
+
sourceId: external_exports.string().min(1).max(200),
|
|
23458
|
+
title: external_exports.string().min(1).max(200),
|
|
23459
|
+
/** Docs page or app route. Always a path on an Overlane host; checked by the route index. */
|
|
23460
|
+
url: external_exports.string().min(1).max(500),
|
|
23461
|
+
snippet: external_exports.string().max(600).optional()
|
|
23462
|
+
}).strict();
|
|
23463
|
+
MESSAGE_ORIGINS = ["user", "assistant", "retrieved", "tool"];
|
|
23464
|
+
AgentMessageOrigin = external_exports.enum(MESSAGE_ORIGINS);
|
|
23465
|
+
AgentMessage = external_exports.object({
|
|
23466
|
+
tenantId: TenantId,
|
|
23467
|
+
id: external_exports.string().min(1).max(128),
|
|
23468
|
+
conversationId: external_exports.string().min(1).max(128),
|
|
23469
|
+
origin: AgentMessageOrigin,
|
|
23470
|
+
content: external_exports.string().max(8e3),
|
|
23471
|
+
citations: external_exports.array(AgentCitation).max(10).default([]),
|
|
23472
|
+
/** "not_found" when the answer is the deterministic below-threshold reply. */
|
|
23473
|
+
outcome: external_exports.enum(["answer", "not_found", "navigation", "tool_result", "approval", "refusal", "info"]).optional(),
|
|
23474
|
+
createdAt: Timestamp
|
|
23475
|
+
}).strict();
|
|
23476
|
+
AgentChatRequest = external_exports.object({ tenantId: TenantId, conversationId: external_exports.string().min(1).max(128), text: external_exports.string().min(1).max(4e3), currentPath: external_exports.string().max(300).optional(), escalate: external_exports.boolean().optional() }).strict();
|
|
23477
|
+
AgentFeedback = external_exports.object({ tenantId: TenantId, messageId: external_exports.string().min(1).max(128), rating: external_exports.enum(["up", "down"]), note: external_exports.string().max(500).optional(), at: Timestamp }).strict();
|
|
23478
|
+
AGENT_AUDIT_RESULTS = ["ok", "refused", "error", "approval_proposed", "approval_decided"];
|
|
23479
|
+
AgentAuditResult = external_exports.enum(AGENT_AUDIT_RESULTS);
|
|
23480
|
+
AgentAuditEvent = external_exports.object({
|
|
23481
|
+
tenantId: TenantId,
|
|
23482
|
+
id: external_exports.string().min(1).max(128),
|
|
23483
|
+
at: Timestamp,
|
|
23484
|
+
actor: external_exports.object({ userId: UserId, role: Role }).strict(),
|
|
23485
|
+
conversationId: external_exports.string().min(1).max(128),
|
|
23486
|
+
tool: external_exports.string().min(1).max(100),
|
|
23487
|
+
argumentsDigest: Sha256Digest,
|
|
23488
|
+
result: AgentAuditResult,
|
|
23489
|
+
detail: external_exports.string().max(300).optional(),
|
|
23490
|
+
approvalId: external_exports.string().min(1).max(128).optional()
|
|
23491
|
+
}).strict();
|
|
23492
|
+
AgentReadOnlyMode = external_exports.object({ tenantId: TenantId, enabled: external_exports.boolean(), setBy: UserId, setAt: Timestamp }).strict();
|
|
23493
|
+
RouteIndexEntry = external_exports.object({
|
|
23494
|
+
path: external_exports.string().regex(/^\/[A-Za-z0-9\/_.-]*$/),
|
|
23495
|
+
title: external_exports.string().min(1).max(120),
|
|
23496
|
+
description: external_exports.string().min(1).max(300),
|
|
23497
|
+
keywords: external_exports.array(external_exports.string().min(1).max(40)).max(20).default([]),
|
|
23498
|
+
roles: external_exports.array(Role).min(1),
|
|
23499
|
+
plan: AgentPlan
|
|
23500
|
+
}).strict();
|
|
23501
|
+
RouteIndex = external_exports.object({ version: external_exports.literal("1"), routes: external_exports.array(RouteIndexEntry).min(1) }).strict();
|
|
23502
|
+
AgentRouteHit = external_exports.object({ tenantId: TenantId, path: external_exports.string().startsWith("/"), title: external_exports.string().min(1).max(120), score: external_exports.number().nonnegative() }).strict();
|
|
23503
|
+
}
|
|
23504
|
+
});
|
|
23505
|
+
|
|
23361
23506
|
// ../contracts/src/plans.ts
|
|
23362
23507
|
var PLAN_IDS, BillingPlanId, CHECKOUT_PLANS, CheckoutPlanId, METERS, Meter, AllowanceValue, PlanAllowances, PlanData, OverageRates, FreeTierControls, PlanCatalog, TenantPlanLimits;
|
|
23363
23508
|
var init_plans = __esm({
|
|
@@ -23758,6 +23903,7 @@ var init_src = __esm({
|
|
|
23758
23903
|
init_review();
|
|
23759
23904
|
init_guardrails();
|
|
23760
23905
|
init_code_map();
|
|
23906
|
+
init_agent();
|
|
23761
23907
|
init_plans();
|
|
23762
23908
|
init_billing();
|
|
23763
23909
|
}
|
|
@@ -31112,7 +31258,7 @@ var VERSION;
|
|
|
31112
31258
|
var init_assets = __esm({
|
|
31113
31259
|
"src/assets.ts"() {
|
|
31114
31260
|
"use strict";
|
|
31115
|
-
VERSION = true ? "0.1.
|
|
31261
|
+
VERSION = true ? "0.1.127" : "0.0.0-dev";
|
|
31116
31262
|
}
|
|
31117
31263
|
});
|
|
31118
31264
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "overlane",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.127",
|
|
4
4
|
"description": "Overlane: connect a GitHub project to your coding agents. One portable CLI with project memory, tasks, a code index, guardrails and the Claude Code and Codex plugin.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"overlane",
|