@fingerskier/augment 0.4.0 → 0.5.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/LICENSE +201 -201
- package/README.md +494 -450
- package/dist/cli.js +5 -4
- package/dist/cli.js.map +1 -1
- package/dist/daemon/client.d.ts +6 -0
- package/dist/daemon/client.js +19 -0
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/http.js +79 -9
- package/dist/daemon/http.js.map +1 -1
- package/dist/daemon/lifetime-lock.js +12 -12
- package/dist/db.js +107 -107
- package/dist/decoction.d.ts +51 -0
- package/dist/decoction.js +184 -0
- package/dist/decoction.js.map +1 -0
- package/dist/hooks.d.ts +8 -5
- package/dist/hooks.js +49 -20
- package/dist/hooks.js.map +1 -1
- package/dist/install.d.ts +14 -2
- package/dist/install.js +189 -1
- package/dist/install.js.map +1 -1
- package/dist/mcp/apps.js +480 -480
- package/dist/mcp/server.js +83 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/files.js +21 -2
- package/dist/memory/files.js.map +1 -1
- package/dist/memory/project.d.ts +3 -0
- package/dist/memory/project.js +20 -0
- package/dist/memory/project.js.map +1 -1
- package/dist/pi/extension.d.ts +6 -0
- package/dist/pi/extension.js +74 -20
- package/dist/pi/extension.js.map +1 -1
- package/dist/proposals.js +16 -15
- package/dist/proposals.js.map +1 -1
- package/dist/service.d.ts +134 -2
- package/dist/service.js +578 -51
- package/dist/service.js.map +1 -1
- package/docs/FEATURES.md +771 -615
- package/docs/verify-memory-flow.md +4 -3
- package/integrations/claude/skills/augment-context/SKILL.md +74 -74
- package/integrations/claude/skills/augment-decoction/SKILL.md +36 -0
- package/integrations/claude/skills/augment-dream/SKILL.md +34 -0
- package/integrations/claude/skills/augment-dream/agents/openai.yaml +4 -0
- package/integrations/claude/skills/augment-sleep/SKILL.md +26 -26
- package/integrations/codex/SKILL.md +107 -74
- package/integrations/examples/claude-mcp-config.json +17 -17
- package/integrations/examples/codex-mcp-config.json +17 -17
- package/integrations/examples/grok-mcp-config.toml +18 -0
- package/integrations/grok/AGENTS.md +61 -0
- package/integrations/pi/skills/augment-decoction/SKILL.md +37 -0
- package/integrations/pi/skills/augment-dream/SKILL.md +36 -0
- package/package.json +85 -84
- package/dist/tally.d.ts +0 -46
- package/dist/tally.js +0 -94
- package/dist/tally.js.map +0 -1
package/dist/proposals.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mkdir, readdir, readFile,
|
|
1
|
+
import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import matter from "gray-matter";
|
|
4
4
|
import { normalizeKind, normalizeLinkType } from "./memory/files.js";
|
|
@@ -29,9 +29,8 @@ export async function writeProposal(stateDir, fm, body) {
|
|
|
29
29
|
};
|
|
30
30
|
const stamp = timestampSegment(new Date());
|
|
31
31
|
const base = `${stamp}-${safeSegment(fm.name ?? "link")}`;
|
|
32
|
-
const filename = await uniqueFilename(dir, base);
|
|
33
32
|
const trimmedBody = body.trim();
|
|
34
|
-
await
|
|
33
|
+
const filename = await writeUniqueProposal(dir, base, matter.stringify(`${trimmedBody}\n`, frontmatter));
|
|
35
34
|
return { frontmatter, body: trimmedBody, filename };
|
|
36
35
|
}
|
|
37
36
|
export async function readProposal(stateDir, type, filename) {
|
|
@@ -114,23 +113,25 @@ function timestampSegment(date) {
|
|
|
114
113
|
const s = pad(date.getUTCSeconds());
|
|
115
114
|
return `${y}${mo}${d}-${h}${mi}${s}`;
|
|
116
115
|
}
|
|
117
|
-
async function
|
|
116
|
+
async function writeUniqueProposal(dir, base, contents) {
|
|
118
117
|
let candidate = `${base}.md`;
|
|
119
118
|
let attempt = 2;
|
|
120
|
-
while (
|
|
119
|
+
while (true) {
|
|
120
|
+
try {
|
|
121
|
+
// `wx` makes path reservation and creation one atomic filesystem
|
|
122
|
+
// operation. A separate exists-check lets concurrent writers both pick
|
|
123
|
+
// the same candidate and then overwrite one another.
|
|
124
|
+
await writeFile(path.join(dir, candidate), contents, { encoding: "utf8", flag: "wx" });
|
|
125
|
+
return candidate;
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
if (error.code !== "EEXIST") {
|
|
129
|
+
throw error;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
121
132
|
candidate = `${base}-${attempt}.md`;
|
|
122
133
|
attempt += 1;
|
|
123
134
|
}
|
|
124
|
-
return candidate;
|
|
125
|
-
}
|
|
126
|
-
async function pathExists(absolutePath) {
|
|
127
|
-
try {
|
|
128
|
-
await stat(absolutePath);
|
|
129
|
-
return true;
|
|
130
|
-
}
|
|
131
|
-
catch {
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
135
|
}
|
|
135
136
|
// Security: filenames come from callers (including MCP tool args in later
|
|
136
137
|
// tasks) and are joined directly onto proposalsDir(). Reject anything that
|
package/dist/proposals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposals.js","sourceRoot":"","sources":["../src/proposals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"proposals.js","sourceRoot":"","sources":["../src/proposals.ts"],"names":[],"mappings":"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"}
|
package/dist/service.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { AugmentConfig } from "./config.js";
|
|
2
2
|
import { AugmentDatabase } from "./db.js";
|
|
3
|
+
import { type DecoctionDiscoveryCluster } from "./decoction.js";
|
|
3
4
|
import type { EmbeddingProvider } from "./embeddings.js";
|
|
5
|
+
import type { LinkType, MemoryKind } from "./constants.js";
|
|
4
6
|
import { type Proposal, type ProposalStatus } from "./proposals.js";
|
|
5
7
|
import { type SleepCluster } from "./sleep.js";
|
|
6
8
|
import type { LinkRecord, MemoryRecord, ProjectGraph, ProjectRecord, SearchInput, SearchResult, UpsertInput } from "./types.js";
|
|
@@ -16,6 +18,58 @@ export interface SearchOutput {
|
|
|
16
18
|
text: string;
|
|
17
19
|
results: SearchResult[];
|
|
18
20
|
}
|
|
21
|
+
export interface DecoctionRemovalSuggestion {
|
|
22
|
+
path: string;
|
|
23
|
+
reason: string;
|
|
24
|
+
}
|
|
25
|
+
export interface DecoctionGleanDiscoverInput {
|
|
26
|
+
action: "discover";
|
|
27
|
+
min_cosine?: number;
|
|
28
|
+
limit?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface DecoctionGleanWriteInput {
|
|
31
|
+
action: "write";
|
|
32
|
+
kind: "SPEC" | "ARCH";
|
|
33
|
+
name: string;
|
|
34
|
+
content: string;
|
|
35
|
+
tags?: string[];
|
|
36
|
+
derived_from: string[];
|
|
37
|
+
suggested_removals?: DecoctionRemovalSuggestion[];
|
|
38
|
+
expected_content_hash?: string;
|
|
39
|
+
expected_frontmatter_hash?: string;
|
|
40
|
+
}
|
|
41
|
+
export type DecoctionGleanInput = DecoctionGleanDiscoverInput | DecoctionGleanWriteInput;
|
|
42
|
+
export interface DecoctionGleanDiscoverOutput {
|
|
43
|
+
action: "discover";
|
|
44
|
+
text: string;
|
|
45
|
+
eligible: number;
|
|
46
|
+
embedded: number;
|
|
47
|
+
min_cosine: number;
|
|
48
|
+
min_projects: number;
|
|
49
|
+
clusters: DecoctionDiscoveryCluster[];
|
|
50
|
+
}
|
|
51
|
+
export interface DecoctionGleanWriteOutput {
|
|
52
|
+
action: "write";
|
|
53
|
+
memory: MemoryRecord;
|
|
54
|
+
upsert_action: UpsertResult["action"];
|
|
55
|
+
suggested_removals: DecoctionRemovalSuggestion[];
|
|
56
|
+
warnings: string[];
|
|
57
|
+
text: string;
|
|
58
|
+
}
|
|
59
|
+
export interface DecoctionCleanupInput {
|
|
60
|
+
generic_path: string;
|
|
61
|
+
source_paths: string[];
|
|
62
|
+
}
|
|
63
|
+
export interface DecoctionCleanupResult {
|
|
64
|
+
generic_path: string;
|
|
65
|
+
results: Array<{
|
|
66
|
+
source_path: string;
|
|
67
|
+
status: "deleted" | "failed";
|
|
68
|
+
retargeted_links: number;
|
|
69
|
+
error?: string;
|
|
70
|
+
}>;
|
|
71
|
+
text: string;
|
|
72
|
+
}
|
|
19
73
|
export interface SleepCandidatesInput {
|
|
20
74
|
/** Restrict to one project; omit to preview candidates in every project (clusters never span projects). */
|
|
21
75
|
project_name?: string;
|
|
@@ -49,6 +103,44 @@ export interface SleepApplyOutput {
|
|
|
49
103
|
proposal: Proposal;
|
|
50
104
|
text: string;
|
|
51
105
|
}
|
|
106
|
+
/** Draft a speculative memory in the active project from one or more existing
|
|
107
|
+
* inspirations. Inspirations are deliberately global: they may belong to the
|
|
108
|
+
* active project, the reserved generic project, or any foreign project. */
|
|
109
|
+
export interface DreamMemoryProposeInput {
|
|
110
|
+
project_name: string;
|
|
111
|
+
kind: MemoryKind;
|
|
112
|
+
name: string;
|
|
113
|
+
content: string;
|
|
114
|
+
derived_from: string[];
|
|
115
|
+
rationale?: string;
|
|
116
|
+
link?: never;
|
|
117
|
+
}
|
|
118
|
+
/** Draft a speculative link. Applying it may only rewrite a source in the
|
|
119
|
+
* active project, while the target may be current, generic, or foreign. */
|
|
120
|
+
export interface DreamLinkProposeInput {
|
|
121
|
+
project_name: string;
|
|
122
|
+
link: {
|
|
123
|
+
from: string;
|
|
124
|
+
to: string;
|
|
125
|
+
type: LinkType;
|
|
126
|
+
};
|
|
127
|
+
rationale?: string;
|
|
128
|
+
kind?: never;
|
|
129
|
+
name?: never;
|
|
130
|
+
content?: never;
|
|
131
|
+
derived_from?: never;
|
|
132
|
+
}
|
|
133
|
+
export type DreamProposeInput = DreamMemoryProposeInput | DreamLinkProposeInput;
|
|
134
|
+
export interface DreamApplyInput {
|
|
135
|
+
filename: string;
|
|
136
|
+
}
|
|
137
|
+
export interface DreamApplyOutput {
|
|
138
|
+
type: "dream-memory" | "dream-link";
|
|
139
|
+
proposal: Proposal;
|
|
140
|
+
memory?: MemoryRecord;
|
|
141
|
+
link?: LinkRecord;
|
|
142
|
+
text: string;
|
|
143
|
+
}
|
|
52
144
|
export declare class AugmentService {
|
|
53
145
|
private readonly config;
|
|
54
146
|
private readonly embeddingProvider;
|
|
@@ -65,6 +157,10 @@ export declare class AugmentService {
|
|
|
65
157
|
* searches. */
|
|
66
158
|
private corpusPromise?;
|
|
67
159
|
private readonly queryEmbeddingCache;
|
|
160
|
+
/** FIFO critical section for every corpus mutation. Compound operations use
|
|
161
|
+
* their private `*Core` helpers while holding this lock so their validation,
|
|
162
|
+
* frontmatter rewrites, and deletes cannot interleave with another request. */
|
|
163
|
+
private mutationTail;
|
|
68
164
|
constructor(config: AugmentConfig, embeddingProvider?: EmbeddingProvider);
|
|
69
165
|
useStateDir(stateDir: string): void;
|
|
70
166
|
close(): Promise<void>;
|
|
@@ -93,6 +189,7 @@ export declare class AugmentService {
|
|
|
93
189
|
*/
|
|
94
190
|
consumeSelfWrite(relativePath: string): boolean;
|
|
95
191
|
private recordSelfWrite;
|
|
192
|
+
private memoryFileExists;
|
|
96
193
|
upsert(input: UpsertInput): Promise<UpsertResult>;
|
|
97
194
|
private upsertCore;
|
|
98
195
|
read(id: number): Promise<MemoryRecord>;
|
|
@@ -122,15 +219,24 @@ export declare class AugmentService {
|
|
|
122
219
|
}>;
|
|
123
220
|
private unlinkCore;
|
|
124
221
|
private invalidateCorpusSnapshot;
|
|
222
|
+
/** Queue one corpus mutation after the previous request, keeping the queue
|
|
223
|
+
* usable after failures. Assignment happens synchronously before any caller
|
|
224
|
+
* can enqueue the next request. */
|
|
225
|
+
private serializeMutation;
|
|
125
226
|
private corpus;
|
|
126
227
|
/** Query vectors depend only on the query text and the (process-pinned) model,
|
|
127
228
|
* so unlike the corpus snapshot they never need invalidating on writes. */
|
|
128
229
|
private embedQuery;
|
|
129
230
|
search(input: SearchInput): Promise<SearchOutput>;
|
|
231
|
+
decoctionGlean(input: DecoctionGleanDiscoverInput): Promise<DecoctionGleanDiscoverOutput>;
|
|
232
|
+
decoctionGlean(input: DecoctionGleanWriteInput): Promise<DecoctionGleanWriteOutput>;
|
|
233
|
+
private decoctionGleanWrite;
|
|
234
|
+
decoctionCleanup(input: DecoctionCleanupInput): Promise<DecoctionCleanupResult>;
|
|
235
|
+
private decoctionCleanupCore;
|
|
130
236
|
/**
|
|
131
237
|
* READ-ONLY sleep preview: which settled WORK memories WOULD consolidate.
|
|
132
|
-
* Performs zero writes
|
|
133
|
-
*
|
|
238
|
+
* Performs zero writes; an agent must draft a proposal and receive explicit
|
|
239
|
+
* user approval before `sleep_apply` changes the corpus.
|
|
134
240
|
*/
|
|
135
241
|
sleepCandidates(input?: SleepCandidatesInput, now?: number): Promise<SleepCandidatesOutput>;
|
|
136
242
|
/**
|
|
@@ -163,6 +269,32 @@ export declare class AugmentService {
|
|
|
163
269
|
proposal: Proposal;
|
|
164
270
|
text: string;
|
|
165
271
|
}>;
|
|
272
|
+
/**
|
|
273
|
+
* Draft one speculative memory or link outside the corpus. The daemon never
|
|
274
|
+
* synthesizes a dream: an agent supplies the complete candidate and this
|
|
275
|
+
* method only validates its live references and writes a review artifact.
|
|
276
|
+
*/
|
|
277
|
+
dreamPropose(input: DreamProposeInput): Promise<{
|
|
278
|
+
proposal: Proposal;
|
|
279
|
+
text: string;
|
|
280
|
+
}>;
|
|
281
|
+
/** List the whole dreams/ proposal family, including both dream-memory and
|
|
282
|
+
* dream-link records. `dream-memory` is intentionally only the directory
|
|
283
|
+
* selector used by the shared proposal store. */
|
|
284
|
+
dreamProposals(status?: ProposalStatus): Promise<{
|
|
285
|
+
proposals: Proposal[];
|
|
286
|
+
text: string;
|
|
287
|
+
}>;
|
|
288
|
+
/** Apply the explicitly approved proposal after re-reading and re-validating
|
|
289
|
+
* it against the live corpus. The HTTP route owns the single git commit. */
|
|
290
|
+
dreamApply(input: DreamApplyInput): Promise<DreamApplyOutput>;
|
|
291
|
+
private dreamApplyCore;
|
|
292
|
+
dreamReject(filename: string): Promise<{
|
|
293
|
+
proposal: Proposal;
|
|
294
|
+
text: string;
|
|
295
|
+
}>;
|
|
296
|
+
private validateDreamMemory;
|
|
297
|
+
private validateDreamLink;
|
|
166
298
|
/**
|
|
167
299
|
* Shared sleep validation, run at propose time and re-run against the live
|
|
168
300
|
* corpus at apply time. Every source must resolve, be a WORK memory in
|