@shodocan/opencode-hindsight 1.0.1 → 1.0.3
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/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/index.js +41 -19
- package/dist/services/client.d.ts.map +1 -1
- package/dist/services/tags.d.ts +5 -4
- package/dist/services/tags.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/config.d.ts
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
interface HindsightConfig {
|
|
2
|
+
baseUrl?: string;
|
|
3
|
+
apiKey?: string;
|
|
4
|
+
similarityThreshold?: number;
|
|
5
|
+
maxMemories?: number;
|
|
6
|
+
maxProjectMemories?: number;
|
|
7
|
+
maxProfileItems?: number;
|
|
8
|
+
injectProfile?: boolean;
|
|
9
|
+
bankPrefix?: string;
|
|
10
|
+
userBank?: string;
|
|
11
|
+
projectBank?: string;
|
|
12
|
+
maxTokens?: number;
|
|
13
|
+
budget?: 'low' | 'mid' | 'high';
|
|
14
|
+
keywordPatterns?: string[];
|
|
15
|
+
compactionThreshold?: number;
|
|
16
|
+
agentProjectBanks?: Record<string, string>;
|
|
17
|
+
runtimeProjectBanks?: Record<string, string>;
|
|
18
|
+
}
|
|
19
|
+
export declare function resolveBaseUrl(config?: Pick<HindsightConfig, "baseUrl">, env?: Record<string, string | undefined>): string;
|
|
20
|
+
export declare function resolveApiKey(config?: Pick<HindsightConfig, "apiKey">, env?: Record<string, string | undefined>): string | undefined;
|
|
1
21
|
/**
|
|
2
22
|
* Sanitize one configured bank value. Full-value environment references of
|
|
3
23
|
* the form `$VAR` and `${VAR}` are expanded from the plugin process env.
|
|
@@ -13,6 +33,7 @@ export declare function sanitizeBankValue(value: unknown, env?: Record<string, s
|
|
|
13
33
|
export declare function sanitizeBankMap(map: unknown, env?: Record<string, string | undefined>): Record<string, string>;
|
|
14
34
|
export declare const CONFIG: {
|
|
15
35
|
baseUrl: string;
|
|
36
|
+
apiKey: string | undefined;
|
|
16
37
|
similarityThreshold: number;
|
|
17
38
|
maxMemories: number;
|
|
18
39
|
maxProjectMemories: number;
|
|
@@ -29,4 +50,5 @@ export declare const CONFIG: {
|
|
|
29
50
|
runtimeProjectBanks: Record<string, string>;
|
|
30
51
|
};
|
|
31
52
|
export declare function isConfigured(): boolean;
|
|
53
|
+
export {};
|
|
32
54
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAWA,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AA6ED,wBAAgB,cAAc,CAC5B,MAAM,GAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAc,EACrD,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,CAcR;AAED,wBAAgB,aAAa,CAC3B,MAAM,GAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAc,EACpD,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,GAAG,SAAS,CAQpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,GAAG,SAAS,CAYpB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CAoBlB,CAAC;AAEF,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
|
package/dist/index.js
CHANGED
|
@@ -14050,13 +14050,29 @@ function loadConfig() {
|
|
|
14050
14050
|
}
|
|
14051
14051
|
var fileConfig = loadConfig();
|
|
14052
14052
|
var ENV_REF_RE = /^\$(?:([A-Za-z_][A-Za-z0-9_]*)|\{([A-Za-z_][A-Za-z0-9_]*)\})$/;
|
|
14053
|
-
function
|
|
14054
|
-
|
|
14055
|
-
|
|
14056
|
-
|
|
14057
|
-
|
|
14053
|
+
function resolveBaseUrl(config2 = fileConfig, env = process.env) {
|
|
14054
|
+
const apiUrl = env.HINDSIGHT_API_URL?.trim();
|
|
14055
|
+
if (apiUrl)
|
|
14056
|
+
return apiUrl;
|
|
14057
|
+
const baseUrl = env.HINDSIGHT_BASE_URL?.trim();
|
|
14058
|
+
if (baseUrl)
|
|
14059
|
+
return baseUrl;
|
|
14060
|
+
if (typeof config2.baseUrl === "string") {
|
|
14061
|
+
const configured = config2.baseUrl.trim();
|
|
14062
|
+
if (configured)
|
|
14063
|
+
return configured;
|
|
14064
|
+
}
|
|
14058
14065
|
return "http://localhost:8888";
|
|
14059
14066
|
}
|
|
14067
|
+
function resolveApiKey(config2 = fileConfig, env = process.env) {
|
|
14068
|
+
const apiKey = env.HINDSIGHT_API_KEY?.trim();
|
|
14069
|
+
if (apiKey)
|
|
14070
|
+
return apiKey;
|
|
14071
|
+
const tenantApiKey = env.HINDSIGHT_API_TENANT_API_KEY?.trim();
|
|
14072
|
+
if (tenantApiKey)
|
|
14073
|
+
return tenantApiKey;
|
|
14074
|
+
return sanitizeBankValue(config2.apiKey, env);
|
|
14075
|
+
}
|
|
14060
14076
|
function sanitizeBankValue(value, env = process.env) {
|
|
14061
14077
|
if (typeof value !== "string")
|
|
14062
14078
|
return;
|
|
@@ -14086,7 +14102,8 @@ function sanitizeBankMap(map2, env = process.env) {
|
|
|
14086
14102
|
return out;
|
|
14087
14103
|
}
|
|
14088
14104
|
var CONFIG = {
|
|
14089
|
-
baseUrl:
|
|
14105
|
+
baseUrl: resolveBaseUrl(fileConfig),
|
|
14106
|
+
apiKey: resolveApiKey(fileConfig),
|
|
14090
14107
|
similarityThreshold: fileConfig.similarityThreshold ?? DEFAULTS.similarityThreshold,
|
|
14091
14108
|
maxMemories: fileConfig.maxMemories ?? DEFAULTS.maxMemories,
|
|
14092
14109
|
maxProjectMemories: fileConfig.maxProjectMemories ?? DEFAULTS.maxProjectMemories,
|
|
@@ -14155,9 +14172,13 @@ class HindsightClientWrapper {
|
|
|
14155
14172
|
if (!isConfigured()) {
|
|
14156
14173
|
throw new Error("Hindsight baseUrl not configured");
|
|
14157
14174
|
}
|
|
14158
|
-
log("client: creating HindsightClient", {
|
|
14175
|
+
log("client: creating HindsightClient", {
|
|
14176
|
+
baseUrl: CONFIG.baseUrl,
|
|
14177
|
+
hasApiKey: !!CONFIG.apiKey
|
|
14178
|
+
});
|
|
14159
14179
|
this.client = new HindsightClient({
|
|
14160
|
-
baseUrl: CONFIG.baseUrl
|
|
14180
|
+
baseUrl: CONFIG.baseUrl,
|
|
14181
|
+
...CONFIG.apiKey ? { apiKey: CONFIG.apiKey } : {}
|
|
14161
14182
|
});
|
|
14162
14183
|
}
|
|
14163
14184
|
return this.client;
|
|
@@ -14250,7 +14271,10 @@ class HindsightClientWrapper {
|
|
|
14250
14271
|
log("deleteMemory: start", { bank, memoryId });
|
|
14251
14272
|
try {
|
|
14252
14273
|
const url2 = `${CONFIG.baseUrl}/v1/default/banks/${bank}/memories/${memoryId}/observations`;
|
|
14253
|
-
const response = await fetch(url2, {
|
|
14274
|
+
const response = await fetch(url2, {
|
|
14275
|
+
method: "DELETE",
|
|
14276
|
+
...CONFIG.apiKey ? { headers: { Authorization: `Bearer ${CONFIG.apiKey}` } } : {}
|
|
14277
|
+
});
|
|
14254
14278
|
if (!response.ok) {
|
|
14255
14279
|
const text = await response.text();
|
|
14256
14280
|
log("deleteMemory: http error", { status: response.status, body: text });
|
|
@@ -14476,9 +14500,16 @@ function resolveBanks(input, options = {}) {
|
|
|
14476
14500
|
let matchedAgent;
|
|
14477
14501
|
let matchedAlias;
|
|
14478
14502
|
let matchedAgentPattern;
|
|
14503
|
+
const agentMatch = matchAgentBank(input.agent, cfgAgentBanks);
|
|
14504
|
+
if (agentMatch !== undefined) {
|
|
14505
|
+
project = agentMatch.bank;
|
|
14506
|
+
projectSource = "agentProjectBanks";
|
|
14507
|
+
matchedAgent = input.agent;
|
|
14508
|
+
matchedAgentPattern = agentMatch.pattern;
|
|
14509
|
+
}
|
|
14479
14510
|
const alias = input.projectBankAlias?.trim() || undefined;
|
|
14480
14511
|
let runtimeAliasBank;
|
|
14481
|
-
if (alias !== undefined) {
|
|
14512
|
+
if (project === undefined && alias !== undefined) {
|
|
14482
14513
|
const hasAlias = Object.prototype.hasOwnProperty.call(cfgRuntimeBanks, alias);
|
|
14483
14514
|
const resolved = hasAlias ? cfgRuntimeBanks[alias] : undefined;
|
|
14484
14515
|
if (typeof resolved !== "string" || !resolved.trim()) {
|
|
@@ -14499,15 +14530,6 @@ function resolveBanks(input, options = {}) {
|
|
|
14499
14530
|
projectSource = "runtimeProjectBanks";
|
|
14500
14531
|
matchedAlias = alias;
|
|
14501
14532
|
}
|
|
14502
|
-
if (project === undefined) {
|
|
14503
|
-
const agentMatch = matchAgentBank(input.agent, cfgAgentBanks);
|
|
14504
|
-
if (agentMatch !== undefined) {
|
|
14505
|
-
project = agentMatch.bank;
|
|
14506
|
-
projectSource = "agentProjectBanks";
|
|
14507
|
-
matchedAgent = input.agent;
|
|
14508
|
-
matchedAgentPattern = agentMatch.pattern;
|
|
14509
|
-
}
|
|
14510
|
-
}
|
|
14511
14533
|
if (project === undefined && cfgProjectBank) {
|
|
14512
14534
|
project = cfgProjectBank;
|
|
14513
14535
|
projectSource = "config:projectBank";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/services/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,mBAAmB,EACnB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAc3B,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAgC;IAE9C,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/services/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,mBAAmB,EACnB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAc3B,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAgC;IAE9C,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,SAAS;IAiBX,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmB1C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;;;;;;;;;IAoBvC,SAAS,CACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,UAAU,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EACvE,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAClD,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;KACnC;IAoEG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;IAwB3C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAK;;;;;;;;;;;;;;;IA6BrC,kBAAkB,CACtB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;;;;;;;;;;;CA4EvD;AAED,eAAO,MAAM,eAAe,wBAA+B,CAAC"}
|
package/dist/services/tags.d.ts
CHANGED
|
@@ -72,11 +72,12 @@ export interface ResolvedBanks {
|
|
|
72
72
|
/**
|
|
73
73
|
* Pure per-call bank resolver implementing project bank precedence:
|
|
74
74
|
*
|
|
75
|
-
* 1. `
|
|
76
|
-
*
|
|
77
|
-
*
|
|
75
|
+
* 1. Exact / glob `agentProjectBanks` match for `agent`
|
|
76
|
+
* (matched agents are isolated from env and alias overrides)
|
|
77
|
+
* 2. `HINDSIGHT_PROJECT_BANK_ID` env var
|
|
78
|
+
* 3. `HINDSIGHT_BANK_ID` env var (legacy fallback)
|
|
79
|
+
* 4. Runtime project bank alias (`projectBankAlias` resolved against
|
|
78
80
|
* `runtimeProjectBanks`)
|
|
79
|
-
* 4. Exact / glob `agentProjectBanks` match for `agent`
|
|
80
81
|
* 5. `projectBank` from config (explicit fallback)
|
|
81
82
|
* 6. Generated `p_<project>_<hash>` fallback
|
|
82
83
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/services/tags.ts"],"names":[],"mappings":"AAQA,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAO3C;AAED,wBAAgB,WAAW,IAAI,MAAM,CAapC;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASxD;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAG7E;AAMD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB,+BAA+B,GAC/B,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,GACpB,WAAW,CAAC;AAEhB,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,aAAa,EAAE,iBAAiB,CAAC;IACjC,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyDD
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/services/tags.ts"],"names":[],"mappings":"AAQA,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAO3C;AAED,wBAAgB,WAAW,IAAI,MAAM,CAapC;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASxD;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAG7E;AAMD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB,+BAA+B,GAC/B,uBAAuB,GACvB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,GACpB,WAAW,CAAC;AAEhB,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,aAAa,EAAE,iBAAiB,CAAC;IACjC,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE,mBAAwB,GAChC,aAAa,CA2Ef"}
|