overlane 0.1.138 → 0.1.140
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 +81 -14
- 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-codemap.mjs +25 -24
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-context.mjs +1 -1
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-guard.mjs +1 -1
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-intake.mjs +1 -1
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-quota.mjs +1 -1
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-statusline.mjs +1 -1
- package/plugins/claude/plugins/mvrx-harness/scripts/harness-stop.mjs +1 -1
- package/plugins/codex/plugins/mvrx-harness/.codex-plugin/plugin.json +1 -1
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-codemap.mjs +25 -24
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-context.mjs +1 -1
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-guard.mjs +1 -1
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-intake.mjs +1 -1
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-quota.mjs +1 -1
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-statusline.mjs +1 -1
- package/plugins/codex/plugins/mvrx-harness/scripts/harness-stop.mjs +1 -1
- package/plugins/release-manifest.json +23 -23
package/dist/overlane.mjs
CHANGED
|
@@ -22623,7 +22623,38 @@ var init_audit = __esm({
|
|
|
22623
22623
|
"data.exported": "admin",
|
|
22624
22624
|
"data.deleted": "admin",
|
|
22625
22625
|
"restore.drill_run": "admin",
|
|
22626
|
-
"mcp_allowlist.updated": "policy"
|
|
22626
|
+
"mcp_allowlist.updated": "policy",
|
|
22627
|
+
// Admin, policy and token routes added by MS-A6, MS-A8, MS-A9 and MS-C1 that wrote no row until the platform end-to-end check found it (additive)
|
|
22628
|
+
"repo.mirror_set": "policy",
|
|
22629
|
+
"repo.deleted": "admin",
|
|
22630
|
+
"branch_protection.updated": "policy",
|
|
22631
|
+
"ci_settings.updated": "policy",
|
|
22632
|
+
"ci_secret.set": "token",
|
|
22633
|
+
"ci_secret.deleted": "token",
|
|
22634
|
+
"deploy_target.created": "policy",
|
|
22635
|
+
"deploy_environment.created": "policy",
|
|
22636
|
+
"deploy_secret.set": "token",
|
|
22637
|
+
"decision_settings.updated": "policy",
|
|
22638
|
+
"claim_policy.updated": "policy",
|
|
22639
|
+
"budget.set": "policy",
|
|
22640
|
+
"budget.removed": "policy",
|
|
22641
|
+
"pr_routing_policy.updated": "policy",
|
|
22642
|
+
"egress_policy.updated": "policy",
|
|
22643
|
+
"agent_readonly.changed": "policy",
|
|
22644
|
+
"connector.connected": "token",
|
|
22645
|
+
"connector.revoked": "token",
|
|
22646
|
+
"mcp_server.added": "policy",
|
|
22647
|
+
"mcp_server.removed": "policy",
|
|
22648
|
+
"chat_user.mapped": "admin",
|
|
22649
|
+
"api_key.created": "token",
|
|
22650
|
+
"api_key.revoked": "token",
|
|
22651
|
+
"api_key.rotated": "token",
|
|
22652
|
+
"webhook.created": "policy",
|
|
22653
|
+
"webhook.deleted": "policy",
|
|
22654
|
+
"webhook.rotated": "token",
|
|
22655
|
+
"alert_rule.updated": "policy",
|
|
22656
|
+
"alert_rule.deleted": "policy",
|
|
22657
|
+
"observe_retention.purged": "policy"
|
|
22627
22658
|
};
|
|
22628
22659
|
AUDIT_ACTION_NAMES = Object.keys(AUDIT_ACTIONS);
|
|
22629
22660
|
AuditActionName = external_exports.enum(Object.keys(AUDIT_ACTIONS));
|
|
@@ -34526,7 +34557,7 @@ var VERSION;
|
|
|
34526
34557
|
var init_assets = __esm({
|
|
34527
34558
|
"src/assets.ts"() {
|
|
34528
34559
|
"use strict";
|
|
34529
|
-
VERSION = true ? "0.1.
|
|
34560
|
+
VERSION = true ? "0.1.140" : "0.0.0-dev";
|
|
34530
34561
|
}
|
|
34531
34562
|
});
|
|
34532
34563
|
|
|
@@ -42682,20 +42713,45 @@ function wordsOf(text) {
|
|
|
42682
42713
|
function idf(index, word) {
|
|
42683
42714
|
return Math.log(index.wordDocs / (1 + (index.words.get(word) ?? 0)));
|
|
42684
42715
|
}
|
|
42685
|
-
function
|
|
42686
|
-
|
|
42716
|
+
function isGeneric(index, word) {
|
|
42717
|
+
return (index.words.get(word) ?? 0) >= Math.max(GENERIC_DF_FLOOR, index.wordDocs * GENERIC_DF_SHARE);
|
|
42718
|
+
}
|
|
42719
|
+
function isTestPath(path) {
|
|
42720
|
+
return /(^|\/)(tests?|__tests__|__mocks__|fixtures?|__fixtures__)\//.test(path) || /\.(test|spec)\.[cm]?[jt]sx?$/.test(path) || /(^|\/)[^/]*\.fixtures?\.[cm]?[jt]sx?$/.test(path);
|
|
42721
|
+
}
|
|
42722
|
+
function testFilter(task) {
|
|
42723
|
+
if (/\b(tests?|specs?|fixtures?|testing|vitest|jest|mocks?)\b/i.test(task)) return () => true;
|
|
42724
|
+
const lower = task.toLowerCase();
|
|
42725
|
+
return (path) => {
|
|
42726
|
+
if (!isTestPath(path)) return true;
|
|
42727
|
+
const file2 = (path.split("/").pop() ?? path).toLowerCase();
|
|
42728
|
+
return lower.includes(file2) || lower.includes(file2.replace(/\.[cm]?[jt]sx?$/, ""));
|
|
42729
|
+
};
|
|
42730
|
+
}
|
|
42731
|
+
function identifierTokens(task) {
|
|
42732
|
+
const out2 = /* @__PURE__ */ new Set();
|
|
42687
42733
|
for (const match of task.matchAll(/[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*/g)) {
|
|
42688
42734
|
const token = match[0];
|
|
42735
|
+
if (/^[A-Za-z][a-z]*$/.test(token) && task.charAt((match.index ?? 0) - 1) !== "`") continue;
|
|
42736
|
+
out2.add(token);
|
|
42737
|
+
}
|
|
42738
|
+
return out2;
|
|
42739
|
+
}
|
|
42740
|
+
function scoreSymbols(index, task) {
|
|
42741
|
+
const exactNames = /* @__PURE__ */ new Set();
|
|
42742
|
+
for (const token of identifierTokens(task)) {
|
|
42689
42743
|
if (token.length >= 4 && index.byName.has(token)) exactNames.add(token);
|
|
42690
42744
|
if (token.includes(".")) exactNames.add(token);
|
|
42691
42745
|
}
|
|
42692
42746
|
const taskWords = new Set(wordsOf(task));
|
|
42747
|
+
const allowed = testFilter(task);
|
|
42693
42748
|
const scored = [];
|
|
42694
42749
|
for (const symbol2 of index.symbols.values()) {
|
|
42695
|
-
if (!SEEDABLE.has(symbol2.kind)) continue;
|
|
42750
|
+
if (!SEEDABLE.has(symbol2.kind) || !allowed(symbol2.path)) continue;
|
|
42696
42751
|
if (symbol2.kind === "constant" && !/^[A-Z][A-Z0-9_]+$/.test(symbol2.name)) continue;
|
|
42697
42752
|
let score = 0;
|
|
42698
42753
|
let exact = false;
|
|
42754
|
+
const hitWords = [];
|
|
42699
42755
|
if (exactNames.has(symbol2.qualified)) {
|
|
42700
42756
|
score = 200;
|
|
42701
42757
|
exact = true;
|
|
@@ -42711,14 +42767,19 @@ function scoreSymbols(index, task) {
|
|
|
42711
42767
|
let hits = 0;
|
|
42712
42768
|
for (const word of own2) if (taskWords.has(word) && idf(index, word) >= MIN_WORD_IDF) {
|
|
42713
42769
|
score += idf(index, word);
|
|
42770
|
+
if (isGeneric(index, word)) continue;
|
|
42714
42771
|
hits += 1;
|
|
42772
|
+
hitWords.push([word, idf(index, word)]);
|
|
42773
|
+
}
|
|
42774
|
+
for (const word of fileWords) if (!own2.has(word) && taskWords.has(word) && idf(index, word) >= MIN_WORD_IDF) {
|
|
42775
|
+
score += idf(index, word) * 0.4;
|
|
42776
|
+
if (!isGeneric(index, word)) hitWords.push([word, idf(index, word) * 0.4]);
|
|
42715
42777
|
}
|
|
42716
|
-
for (const word of fileWords) if (!own2.has(word) && taskWords.has(word) && idf(index, word) >= MIN_WORD_IDF) score += idf(index, word) * 0.4;
|
|
42717
42778
|
if (hits === 0) score = 0;
|
|
42718
42779
|
else score /= 1 + 0.15 * own2.size;
|
|
42719
42780
|
if (score < MIN_SOFT_SCORE) score = 0;
|
|
42720
42781
|
}
|
|
42721
|
-
if (score > 0) scored.push({ symbol: symbol2, score, exact });
|
|
42782
|
+
if (score > 0) scored.push({ symbol: symbol2, score, exact, hits: hitWords });
|
|
42722
42783
|
}
|
|
42723
42784
|
return scored.sort((a, b) => b.score - a.score || a.symbol.path.localeCompare(b.symbol.path) || a.symbol.line - b.symbol.line);
|
|
42724
42785
|
}
|
|
@@ -42816,11 +42877,11 @@ function layout(index) {
|
|
|
42816
42877
|
}
|
|
42817
42878
|
return [`Layout: ${index.files} source files. ${[...domains].sort().map(([key, count]) => `${key}(${count})`).join(" ")}`];
|
|
42818
42879
|
}
|
|
42819
|
-
function mostCalled(index, limit) {
|
|
42880
|
+
function mostCalled(index, limit, allowed) {
|
|
42820
42881
|
const counts2 = [];
|
|
42821
42882
|
for (const [id2, callers] of index.callers) {
|
|
42822
42883
|
const symbol2 = index.symbols.get(id2);
|
|
42823
|
-
if (symbol2 === void 0 || !SEEDABLE.has(symbol2.kind) || symbol2.kind === "constant") continue;
|
|
42884
|
+
if (symbol2 === void 0 || !SEEDABLE.has(symbol2.kind) || symbol2.kind === "constant" || !allowed(symbol2.path)) continue;
|
|
42824
42885
|
counts2.push({ symbol: symbol2, callers: callers.size });
|
|
42825
42886
|
}
|
|
42826
42887
|
counts2.sort((a, b) => b.callers - a.callers || a.symbol.path.localeCompare(b.symbol.path) || a.symbol.line - b.symbol.line);
|
|
@@ -42830,11 +42891,12 @@ function buildCodeMap(index, task, options = DEFAULT_MAP_OPTIONS) {
|
|
|
42830
42891
|
const lines = [...layout(index), "Edges: 'called by' and 'calls' are resolved by name within imported files, ignoring comments and strings. Lines are file:line of the declaration."];
|
|
42831
42892
|
const fits = (extra) => estimateTokens(`${[...lines, ...extra].join("\n")}
|
|
42832
42893
|
`) <= options.maxTokens;
|
|
42894
|
+
const allowed = testFilter(task);
|
|
42833
42895
|
const scored = scoreSymbols(index, task);
|
|
42834
42896
|
const seeds = [];
|
|
42835
42897
|
const shownFiles = /* @__PURE__ */ new Set();
|
|
42836
42898
|
const taskFree = scored.length === 0;
|
|
42837
|
-
const candidates = taskFree ? mostCalled(index, options.maxSeeds).map((symbol2) => ({ symbol: symbol2, score: 1 })) : scored;
|
|
42899
|
+
const candidates = taskFree ? mostCalled(index, options.maxSeeds, allowed).map((symbol2) => ({ symbol: symbol2, score: 1 })) : scored;
|
|
42838
42900
|
lines.push("", taskFree ? "Most called symbols:" : "Symbols most relevant to the task:");
|
|
42839
42901
|
for (const item of candidates) {
|
|
42840
42902
|
if (seeds.length >= options.maxSeeds) break;
|
|
@@ -42848,10 +42910,13 @@ function buildCodeMap(index, task, options = DEFAULT_MAP_OPTIONS) {
|
|
|
42848
42910
|
shownFiles.add(item.symbol.path);
|
|
42849
42911
|
}
|
|
42850
42912
|
const personal = /* @__PURE__ */ new Map();
|
|
42851
|
-
if (taskFree)
|
|
42852
|
-
|
|
42913
|
+
if (taskFree) {
|
|
42914
|
+
for (const path of index.byFile.keys()) if (allowed(path)) personal.set(path, 1);
|
|
42915
|
+
} else {
|
|
42916
|
+
for (const item of scored.slice(0, 40)) personal.set(item.symbol.path, (personal.get(item.symbol.path) ?? 0) + item.score);
|
|
42917
|
+
}
|
|
42853
42918
|
const rank = pageRank(index, personal);
|
|
42854
|
-
const ordered = [...rank].filter(([path]) => !shownFiles.has(path)).sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]));
|
|
42919
|
+
const ordered = [...rank].filter(([path]) => !shownFiles.has(path) && allowed(path)).sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]));
|
|
42855
42920
|
const related = [];
|
|
42856
42921
|
const top = ordered[0]?.[1] ?? 0;
|
|
42857
42922
|
for (const [path, mass] of ordered) {
|
|
@@ -42885,7 +42950,7 @@ function serializeRepoIndex(index) {
|
|
|
42885
42950
|
const heritage = [...index.heritage].map(([id2, h]) => ({ id: at(id2), extends: h.extends.map(at), implements: h.implements.map(at) }));
|
|
42886
42951
|
return { schemaVersion: "1", files: index.files, wordDocs: index.wordDocs, symbols: symbols2, callees, heritage, paths: [...index.imports.keys()], words: [...index.words] };
|
|
42887
42952
|
}
|
|
42888
|
-
var SEEDABLE, MIN_WORD_IDF, MIN_SOFT_SCORE, MAX_RELATED_FILES, STOP, DEFAULT_MAP_OPTIONS, estimateTokens, where;
|
|
42953
|
+
var SEEDABLE, MIN_WORD_IDF, MIN_SOFT_SCORE, MAX_RELATED_FILES, GENERIC_DF_SHARE, GENERIC_DF_FLOOR, STOP, DEFAULT_MAP_OPTIONS, estimateTokens, where;
|
|
42889
42954
|
var init_rank = __esm({
|
|
42890
42955
|
"../index-builder/src/rank.ts"() {
|
|
42891
42956
|
"use strict";
|
|
@@ -42894,6 +42959,8 @@ var init_rank = __esm({
|
|
|
42894
42959
|
MIN_WORD_IDF = 2.5;
|
|
42895
42960
|
MIN_SOFT_SCORE = 3.5;
|
|
42896
42961
|
MAX_RELATED_FILES = 14;
|
|
42962
|
+
GENERIC_DF_SHARE = 4e-3;
|
|
42963
|
+
GENERIC_DF_FLOOR = 30;
|
|
42897
42964
|
STOP = /* @__PURE__ */ new Set(["the", "a", "an", "of", "to", "in", "is", "are", "and", "or", "for", "that", "this", "it", "its", "by", "be", "on", "as", "at", "with", "from", "which", "what", "when", "where", "who", "how", "do", "does", "not", "any", "each", "every", "all", "also", "than", "then", "so", "if", "into", "file", "path", "answer", "end", "final", "message", "line", "start", "follow", "separate", "comma", "give", "name", "modify", "files", "repository", "source", "code", "change", "update", "make", "use", "uses", "used", "other", "only", "about", "will", "can", "should", "need", "needs", "happen", "merely", "share", "same", "return", "returns", "pass", "passes"]);
|
|
42898
42965
|
DEFAULT_MAP_OPTIONS = { maxTokens: 3400, maxSeeds: 6 };
|
|
42899
42966
|
estimateTokens = estimateCodeMapTokens;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "overlane",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.140",
|
|
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",
|