@hraness/kb 0.17.1
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/DISCLOSURE +43 -0
- package/LICENSE +21 -0
- package/README.md +545 -0
- package/dist/agent-context.js +35 -0
- package/dist/agent-guide-audit.js +18 -0
- package/dist/attachments.js +19 -0
- package/dist/authoring.js +33 -0
- package/dist/benchmark.js +19 -0
- package/dist/capture.js +49 -0
- package/dist/cli.js +3646 -0
- package/dist/clip/acquire.js +57 -0
- package/dist/clip/args.js +21 -0
- package/dist/clip/bounded-byte-buffer.js +9 -0
- package/dist/clip/browser-profiles.js +17 -0
- package/dist/clip/bundle-reader.js +11 -0
- package/dist/clip/cli.js +27 -0
- package/dist/clip/cookies.js +21 -0
- package/dist/clip/defuddle-worker.js +84 -0
- package/dist/clip/doctor.js +32 -0
- package/dist/clip/jobs.js +784 -0
- package/dist/clip/network-proxy.js +9 -0
- package/dist/clip/network.js +28 -0
- package/dist/clip/persist.js +30 -0
- package/dist/clip/refresh.js +11 -0
- package/dist/clip/terminal.js +11 -0
- package/dist/evaluation-builder.js +12238 -0
- package/dist/evaluation-kb.js +26 -0
- package/dist/evaluation.js +35 -0
- package/dist/git.js +39 -0
- package/dist/graph.js +39 -0
- package/dist/index-01jj6rbv.js +1103 -0
- package/dist/index-06c9ctr6.js +738 -0
- package/dist/index-0kavxzqj.js +2480 -0
- package/dist/index-1gwbassd.js +743 -0
- package/dist/index-1n418kb9.js +827 -0
- package/dist/index-1vrd1rmn.js +56 -0
- package/dist/index-1xxnjn0d.js +171 -0
- package/dist/index-3rm7cz6h.js +373 -0
- package/dist/index-3v2z4f0q.js +328 -0
- package/dist/index-48pz4jpc.js +392 -0
- package/dist/index-4j3tt0c3.js +234 -0
- package/dist/index-5n05se68.js +307 -0
- package/dist/index-5vwpzb5a.js +764 -0
- package/dist/index-6g2pv9d2.js +370 -0
- package/dist/index-7fzc32gf.js +712 -0
- package/dist/index-84x0vjjp.js +432 -0
- package/dist/index-adx6khj5.js +488 -0
- package/dist/index-b88v3vtm.js +805 -0
- package/dist/index-cv6fh7z5.js +462 -0
- package/dist/index-cxfrakt7.js +1067 -0
- package/dist/index-d13v9ckt.js +150 -0
- package/dist/index-dycjbhw2.js +1943 -0
- package/dist/index-dyqwejk5.js +531 -0
- package/dist/index-e5fbsywq.js +658 -0
- package/dist/index-f984hw45.js +927 -0
- package/dist/index-gh719d91.js +63 -0
- package/dist/index-hgve9rh2.js +2046 -0
- package/dist/index-hya40gb2.js +474 -0
- package/dist/index-j4zgmzjr.js +152 -0
- package/dist/index-jsmvyyvf.js +1166 -0
- package/dist/index-kh0pwvdd.js +1974 -0
- package/dist/index-mqx4nd6v.js +119 -0
- package/dist/index-mxxxytys.js +1254 -0
- package/dist/index-n5dd7r0v.js +711 -0
- package/dist/index-npg9z1a4.js +431 -0
- package/dist/index-pj501bh1.js +140 -0
- package/dist/index-qry4vhxk.js +1041 -0
- package/dist/index-s2gw5aw9.js +199 -0
- package/dist/index-vvdj6kca.js +70 -0
- package/dist/index-w2zc0vwa.js +571 -0
- package/dist/index-x3fthpsc.js +585 -0
- package/dist/index-zr53sf63.js +44 -0
- package/dist/index-zxdy5pby.js +2728 -0
- package/dist/index-zzhgcwyt.js +966 -0
- package/dist/index.js +453 -0
- package/dist/navigation.js +13 -0
- package/dist/pdf.js +85 -0
- package/dist/percolate.js +24 -0
- package/dist/portfolio.js +77 -0
- package/dist/query.js +29 -0
- package/dist/repository-memory.js +60 -0
- package/dist/sdk.js +36 -0
- package/dist/search-rules.js +34 -0
- package/dist/search.js +22 -0
- package/dist/semantic.js +39 -0
- package/dist/source-inbox.js +17 -0
- package/dist/untrusted-content.js +32 -0
- package/dist/url-intelligence.js +74 -0
- package/dist/workflow.js +23 -0
- package/dist/workflows/decision-context.js +20 -0
- package/dist/workflows/explain-change.js +8 -0
- package/dist/workflows/index.js +28 -0
- package/dist/workflows/plan-radar.js +10 -0
- package/package.json +409 -0
- package/skills/kb/AGENTS.md +19 -0
- package/skills/kb/SKILL.md +82 -0
- package/skills/kb/agents/openai.yaml +4 -0
- package/skills/kb/references/pdf-review.md +51 -0
- package/skills/kb/references/percolate.md +144 -0
- package/skills/kb/references/plan-structure.md +105 -0
- package/skills/kb/references/plan.md +115 -0
- package/skills/kb/references/query.md +231 -0
- package/skills/kb/references/refresh.md +133 -0
- package/skills/kb/references/save-pdf.md +125 -0
- package/skills/kb/references/save-url.md +178 -0
- package/skills/kb/references/url-authentication.md +75 -0
- package/skills/kb/references/url-platforms.md +25 -0
- package/src/agent-context.ts +1241 -0
- package/src/agent-guide-audit.ts +750 -0
- package/src/attachments.ts +723 -0
- package/src/authoring.ts +1725 -0
- package/src/benchmark.ts +362 -0
- package/src/capture.ts +68 -0
- package/src/cli.ts +3660 -0
- package/src/clip/acquire.ts +1273 -0
- package/src/clip/archive-today.ts +402 -0
- package/src/clip/args.ts +423 -0
- package/src/clip/assets.ts +262 -0
- package/src/clip/bounded-byte-buffer.ts +75 -0
- package/src/clip/browser-profiles.ts +372 -0
- package/src/clip/bundle-reader.ts +608 -0
- package/src/clip/capture.ts +1054 -0
- package/src/clip/cli.ts +181 -0
- package/src/clip/cookies.ts +512 -0
- package/src/clip/doctor.ts +1110 -0
- package/src/clip/extract.ts +868 -0
- package/src/clip/jobs.ts +959 -0
- package/src/clip/lib.ts +861 -0
- package/src/clip/media.ts +1474 -0
- package/src/clip/metadata-search-tool/Cargo.lock +2498 -0
- package/src/clip/metadata-search-tool/Cargo.toml +18 -0
- package/src/clip/metadata-search-tool/runner.ts +685 -0
- package/src/clip/metadata-search-tool/src/main.rs +389 -0
- package/src/clip/metadata-search.ts +687 -0
- package/src/clip/network-proxy.ts +627 -0
- package/src/clip/network.ts +950 -0
- package/src/clip/package-root.ts +54 -0
- package/src/clip/persist.ts +1472 -0
- package/src/clip/platforms.ts +1824 -0
- package/src/clip/refresh.ts +197 -0
- package/src/clip/structured.ts +432 -0
- package/src/clip/terminal.ts +197 -0
- package/src/clip/url-intelligence.ts +581 -0
- package/src/clip/url-metadata-backfill.ts +616 -0
- package/src/clip/url-metadata-cli.ts +251 -0
- package/src/clip/url-metadata.ts +1397 -0
- package/src/evaluation-analysis-v2.ts +1440 -0
- package/src/evaluation-builder.ts +2539 -0
- package/src/evaluation-corpus-authoring.ts +2052 -0
- package/src/evaluation-evidence.ts +1147 -0
- package/src/evaluation-execution-v2.ts +426 -0
- package/src/evaluation-implementation.ts +131 -0
- package/src/evaluation-kb-closure.ts +1430 -0
- package/src/evaluation-kb-runner-v2.ts +735 -0
- package/src/evaluation-kb-v2.ts +2567 -0
- package/src/evaluation-kb.ts +1018 -0
- package/src/evaluation-measurement-v2.ts +1462 -0
- package/src/evaluation-packing-v2.ts +452 -0
- package/src/evaluation-redaction.ts +28 -0
- package/src/evaluation-v2.ts +3857 -0
- package/src/evaluation.ts +1220 -0
- package/src/git.ts +1276 -0
- package/src/graph.ts +1487 -0
- package/src/index.ts +20 -0
- package/src/init.ts +123 -0
- package/src/navigation.ts +277 -0
- package/src/note-lock.ts +529 -0
- package/src/pdf/args.ts +202 -0
- package/src/pdf/capture.ts +298 -0
- package/src/pdf/cli.ts +159 -0
- package/src/pdf/extract.ts +303 -0
- package/src/pdf/layout.ts +618 -0
- package/src/pdf/markdown.ts +154 -0
- package/src/pdf/model.ts +234 -0
- package/src/pdf/ocr.ts +190 -0
- package/src/pdf/persist.ts +314 -0
- package/src/pdf/source.ts +135 -0
- package/src/pdf/tools.ts +146 -0
- package/src/pdf.ts +92 -0
- package/src/percolate.ts +877 -0
- package/src/portfolio-audit.ts +574 -0
- package/src/portfolio-identity.ts +162 -0
- package/src/portfolio-registry.ts +473 -0
- package/src/portfolio.ts +765 -0
- package/src/query.ts +646 -0
- package/src/repository-memory.ts +1150 -0
- package/src/sdk.ts +1452 -0
- package/src/search-rules.ts +712 -0
- package/src/search.ts +710 -0
- package/src/semantic-runtime.ts +1139 -0
- package/src/semantic.ts +2480 -0
- package/src/source-inbox.ts +232 -0
- package/src/untrusted-content.ts +401 -0
- package/src/url-intelligence.ts +104 -0
- package/src/vault.ts +636 -0
- package/src/workflow.ts +653 -0
- package/src/workflows/decision-context.ts +81 -0
- package/src/workflows/explain-change.ts +73 -0
- package/src/workflows/index.ts +3 -0
- package/src/workflows/plan-radar.ts +101 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { GitHistoryForNotesResult } from "../git.js";
|
|
2
|
+
import type { MetadataFilter } from "../query.js";
|
|
3
|
+
import {
|
|
4
|
+
packUntrustedSearchContext,
|
|
5
|
+
type KnowledgeBaseSearchResult,
|
|
6
|
+
type KnowledgeBaseSession,
|
|
7
|
+
} from "../sdk.js";
|
|
8
|
+
import { defineWorkflow } from "../workflow.js";
|
|
9
|
+
|
|
10
|
+
export type DecisionContextInput = {
|
|
11
|
+
readonly query: string;
|
|
12
|
+
readonly filters?: readonly MetadataFilter[];
|
|
13
|
+
readonly tags?: readonly string[];
|
|
14
|
+
readonly related?: readonly string[];
|
|
15
|
+
readonly resultLimit?: number;
|
|
16
|
+
readonly maxBytes?: number;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type DecisionContextOutput = {
|
|
20
|
+
/** Execution-safe envelope; retrieved note and Git fields remain inert JSON data inside. */
|
|
21
|
+
readonly context: string;
|
|
22
|
+
readonly truncated: boolean;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
type DecisionContextResults = {
|
|
26
|
+
readonly search: KnowledgeBaseSearchResult;
|
|
27
|
+
readonly history: GitHistoryForNotesResult;
|
|
28
|
+
readonly pack: DecisionContextOutput;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/** Retrieve current rationale, explicit neighbors, and note history as one bounded handoff. */
|
|
32
|
+
export const decisionContextWorkflow = defineWorkflow<
|
|
33
|
+
DecisionContextInput,
|
|
34
|
+
KnowledgeBaseSession,
|
|
35
|
+
DecisionContextResults,
|
|
36
|
+
"pack"
|
|
37
|
+
>({
|
|
38
|
+
id: "decision-context",
|
|
39
|
+
nodes: [
|
|
40
|
+
{
|
|
41
|
+
id: "search",
|
|
42
|
+
resource: "qmd",
|
|
43
|
+
run: ({ input, kb }) => kb.search({
|
|
44
|
+
query: input.query,
|
|
45
|
+
filters: input.filters ?? [],
|
|
46
|
+
tags: input.tags ?? [],
|
|
47
|
+
graph: { related: input.related ?? [] },
|
|
48
|
+
history: false,
|
|
49
|
+
...(input.resultLimit === undefined ? {} : { limit: input.resultLimit }),
|
|
50
|
+
}),
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "history",
|
|
54
|
+
resource: "git",
|
|
55
|
+
needs: ["search"],
|
|
56
|
+
run: async ({ kb, result }) => {
|
|
57
|
+
const search = result("search");
|
|
58
|
+
return await kb.history(search.results.slice(0, 5).map(({ id }) => id), {
|
|
59
|
+
commitsPerNote: 3,
|
|
60
|
+
cochangedPathsPerCommit: 8,
|
|
61
|
+
});
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: "pack",
|
|
66
|
+
needs: ["search", "history"],
|
|
67
|
+
run: ({ input, result }): DecisionContextOutput => {
|
|
68
|
+
const search = result("search");
|
|
69
|
+
const enriched: KnowledgeBaseSearchResult = {
|
|
70
|
+
...search,
|
|
71
|
+
history: result("history"),
|
|
72
|
+
};
|
|
73
|
+
const packed = packUntrustedSearchContext(enriched, {
|
|
74
|
+
...(input.maxBytes === undefined ? {} : { maxBytes: input.maxBytes }),
|
|
75
|
+
});
|
|
76
|
+
return { context: packed.content, truncated: packed.truncated };
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
output: "pack",
|
|
81
|
+
});
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { GitHistorySearchResult } from "../git.js";
|
|
2
|
+
import type { LinkNeighborhood } from "../navigation.js";
|
|
3
|
+
import {
|
|
4
|
+
type KnowledgeBaseSearchResult,
|
|
5
|
+
type KnowledgeBaseSession,
|
|
6
|
+
} from "../sdk.js";
|
|
7
|
+
import { defineWorkflow } from "../workflow.js";
|
|
8
|
+
|
|
9
|
+
export type ExplainChangeInput = {
|
|
10
|
+
readonly query: string;
|
|
11
|
+
readonly historyQuery?: string;
|
|
12
|
+
readonly note?: string;
|
|
13
|
+
readonly resultLimit?: number;
|
|
14
|
+
readonly historyLimit?: number;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export type ExplainChangeOutput = {
|
|
18
|
+
readonly rationale: KnowledgeBaseSearchResult;
|
|
19
|
+
readonly evolution: GitHistorySearchResult;
|
|
20
|
+
readonly neighborhood: LinkNeighborhood | null;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
type ExplainChangeResults = {
|
|
24
|
+
readonly rationale: KnowledgeBaseSearchResult;
|
|
25
|
+
readonly evolution: GitHistorySearchResult;
|
|
26
|
+
readonly neighborhood: LinkNeighborhood | null;
|
|
27
|
+
readonly assemble: ExplainChangeOutput;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/** Search authored rationale and repository evolution concurrently. */
|
|
31
|
+
export const explainChangeWorkflow = defineWorkflow<
|
|
32
|
+
ExplainChangeInput,
|
|
33
|
+
KnowledgeBaseSession,
|
|
34
|
+
ExplainChangeResults,
|
|
35
|
+
"assemble"
|
|
36
|
+
>({
|
|
37
|
+
id: "explain-change",
|
|
38
|
+
nodes: [
|
|
39
|
+
{
|
|
40
|
+
id: "rationale",
|
|
41
|
+
resource: "qmd",
|
|
42
|
+
run: ({ input, kb }) => kb.search({
|
|
43
|
+
query: input.query,
|
|
44
|
+
history: false,
|
|
45
|
+
...(input.resultLimit === undefined ? {} : { limit: input.resultLimit }),
|
|
46
|
+
}),
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: "evolution",
|
|
50
|
+
resource: "git",
|
|
51
|
+
run: ({ input, kb }) => kb.searchHistory({
|
|
52
|
+
query: input.historyQuery ?? input.query,
|
|
53
|
+
...(input.historyLimit === undefined ? {} : { limit: input.historyLimit }),
|
|
54
|
+
}),
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: "neighborhood",
|
|
58
|
+
run: ({ input, kb }) => input.note === undefined
|
|
59
|
+
? null
|
|
60
|
+
: kb.links(input.note, { direction: "both", depth: 1, limit: 20 }),
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "assemble",
|
|
64
|
+
needs: ["rationale", "evolution", "neighborhood"],
|
|
65
|
+
run: ({ result }): ExplainChangeOutput => ({
|
|
66
|
+
rationale: result("rationale"),
|
|
67
|
+
evolution: result("evolution"),
|
|
68
|
+
neighborhood: result("neighborhood"),
|
|
69
|
+
}),
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
output: "assemble",
|
|
73
|
+
});
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { GitHistoryForNotesResult } from "../git.js";
|
|
2
|
+
import type { MetadataFilter, QueryRow } from "../query.js";
|
|
3
|
+
import {
|
|
4
|
+
activePlanStatuses,
|
|
5
|
+
type PlanStatus,
|
|
6
|
+
} from "../repository-memory";
|
|
7
|
+
import {
|
|
8
|
+
type KnowledgeBaseSearchResult,
|
|
9
|
+
type KnowledgeBaseSession,
|
|
10
|
+
} from "../sdk.js";
|
|
11
|
+
import { defineWorkflow } from "../workflow.js";
|
|
12
|
+
|
|
13
|
+
export type PlanRadarInput = {
|
|
14
|
+
readonly query: string;
|
|
15
|
+
/** Omit for all active statuses; terminal statuses request an explicit historical view. */
|
|
16
|
+
readonly status?: PlanStatus;
|
|
17
|
+
readonly repositoryScopes?: readonly string[];
|
|
18
|
+
readonly resultLimit?: number;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type PlanRadarOutput = {
|
|
22
|
+
readonly plans: readonly QueryRow[];
|
|
23
|
+
readonly matches: KnowledgeBaseSearchResult;
|
|
24
|
+
readonly history: GitHistoryForNotesResult;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
type PlanRadarResults = {
|
|
28
|
+
readonly plans: readonly QueryRow[];
|
|
29
|
+
readonly matches: KnowledgeBaseSearchResult;
|
|
30
|
+
readonly history: GitHistoryForNotesResult;
|
|
31
|
+
readonly assemble: PlanRadarOutput;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
function planFilters(status: PlanStatus | undefined): readonly MetadataFilter[] {
|
|
35
|
+
return [
|
|
36
|
+
{ kind: "equals", path: "type", value: "plan" },
|
|
37
|
+
status === undefined
|
|
38
|
+
? { kind: "one-of", path: "status", values: activePlanStatuses }
|
|
39
|
+
: { kind: "equals", path: "status", value: status },
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Combine exact plan state with semantic matches, backlinks, and recent provenance. */
|
|
44
|
+
export const planRadarWorkflow = defineWorkflow<
|
|
45
|
+
PlanRadarInput,
|
|
46
|
+
KnowledgeBaseSession,
|
|
47
|
+
PlanRadarResults,
|
|
48
|
+
"assemble"
|
|
49
|
+
>({
|
|
50
|
+
id: "plan-radar",
|
|
51
|
+
nodes: [
|
|
52
|
+
{
|
|
53
|
+
id: "plans",
|
|
54
|
+
run: ({ input, kb }) => kb.list({
|
|
55
|
+
filters: planFilters(input.status),
|
|
56
|
+
repositoryScopes: input.repositoryScopes ?? [],
|
|
57
|
+
sort: { kind: "builtin", field: "inbound" },
|
|
58
|
+
direction: "desc",
|
|
59
|
+
limit: 100,
|
|
60
|
+
}),
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "matches",
|
|
64
|
+
resource: "qmd",
|
|
65
|
+
run: ({ input, kb }) => kb.search({
|
|
66
|
+
query: input.query,
|
|
67
|
+
filters: planFilters(input.status),
|
|
68
|
+
repositoryScopes: input.repositoryScopes ?? [],
|
|
69
|
+
history: false,
|
|
70
|
+
...(input.resultLimit === undefined ? {} : { limit: input.resultLimit }),
|
|
71
|
+
}),
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: "history",
|
|
75
|
+
resource: "git",
|
|
76
|
+
needs: ["plans", "matches"],
|
|
77
|
+
run: async ({ kb, result }) => {
|
|
78
|
+
const plans = result("plans");
|
|
79
|
+
const matches = result("matches");
|
|
80
|
+
const noteIds = [...new Set([
|
|
81
|
+
...matches.results.map(({ id }) => id),
|
|
82
|
+
...plans.slice(0, 10).map(({ id }) => id),
|
|
83
|
+
])].slice(0, 15);
|
|
84
|
+
return await kb.history(noteIds, {
|
|
85
|
+
commitsPerNote: 2,
|
|
86
|
+
cochangedPathsPerCommit: 5,
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "assemble",
|
|
92
|
+
needs: ["plans", "matches", "history"],
|
|
93
|
+
run: ({ result }): PlanRadarOutput => ({
|
|
94
|
+
plans: result("plans"),
|
|
95
|
+
matches: result("matches"),
|
|
96
|
+
history: result("history"),
|
|
97
|
+
}),
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
output: "assemble",
|
|
101
|
+
});
|