@shodocan/opencode-hindsight 1.0.0 → 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/README.md CHANGED
@@ -540,6 +540,30 @@ This is useful when you want to:
540
540
  - **Organize memories using your own naming scheme**
541
541
  - **Integrate with existing Hindsight banks** from other tools
542
542
 
543
+ ### Bank Names from Environment Variables
544
+
545
+ Bank fields can reference environment variables when the entire configured value is a variable reference. Supported forms are `$VAR` and `${VAR}`, where variable names use shell-style identifiers matching `[A-Za-z_][A-Za-z0-9_]*`:
546
+
547
+ ```jsonc
548
+ {
549
+ "userBank": "$OPENCODE_USER_BANK",
550
+ "projectBank": "$OPENCODE_PROJECT_BANK",
551
+ "agentProjectBanks": {
552
+ "review-*": "$OPENCODE_REVIEW_BANK"
553
+ },
554
+ "runtimeProjectBanks": {
555
+ "reviews": "${OPENCODE_REVIEW_BANK}"
556
+ }
557
+ }
558
+ ```
559
+
560
+ Rules:
561
+
562
+ - Only full-value references are expanded; unsupported or partial env-reference syntax remains literal. `"proj-$OPENCODE_REVIEW_BANK"` remains literal.
563
+ - Missing or empty environment variables are treated as unset.
564
+ - For `agentProjectBanks` and `runtimeProjectBanks`, entries with missing or empty env refs are dropped.
565
+ - Expansion happens when the plugin loads configuration, so restart OpenCode after changing these variables.
566
+
543
567
  ### Agent-Aware Project Bank Routing
544
568
 
545
569
  Subagents can use different project banks without changing OpenCode core. Configure `agentProjectBanks` with exact names or `*` glob patterns:
package/dist/config.d.ts CHANGED
@@ -1,11 +1,39 @@
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;
21
+ /**
22
+ * Sanitize one configured bank value. Full-value environment references of
23
+ * the form `$VAR` and `${VAR}` are expanded from the plugin process env.
24
+ * Partial interpolation is intentionally unsupported and remains literal.
25
+ */
26
+ export declare function sanitizeBankValue(value: unknown, env?: Record<string, string | undefined>): string | undefined;
1
27
  /**
2
28
  * Sanitize a bank-name map from config: reject arrays, drop entries with
3
- * non-string keys/values, and strip leading/trailing whitespace. Returns an
4
- * empty object when absent or not a plain object.
29
+ * non-string keys/values, strip leading/trailing whitespace, and expand
30
+ * full-value env refs in values. Returns an empty object when absent or not a
31
+ * plain object.
5
32
  */
6
- export declare function sanitizeBankMap(map: Record<string, string> | undefined): Record<string, string>;
33
+ export declare function sanitizeBankMap(map: unknown, env?: Record<string, string | undefined>): Record<string, string>;
7
34
  export declare const CONFIG: {
8
35
  baseUrl: string;
36
+ apiKey: string | undefined;
9
37
  similarityThreshold: number;
10
38
  maxMemories: number;
11
39
  maxProjectMemories: number;
@@ -22,4 +50,5 @@ export declare const CONFIG: {
22
50
  runtimeProjectBanks: Record<string, string>;
23
51
  };
24
52
  export declare function isConfigured(): boolean;
53
+ export {};
25
54
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA6GA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS/F;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CAmBlB,CAAC;AAEF,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
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
@@ -14049,34 +14049,69 @@ function loadConfig() {
14049
14049
  return {};
14050
14050
  }
14051
14051
  var fileConfig = loadConfig();
14052
- function getBaseUrl() {
14053
- if (process.env.HINDSIGHT_BASE_URL)
14054
- return process.env.HINDSIGHT_BASE_URL;
14055
- if (fileConfig.baseUrl)
14056
- return fileConfig.baseUrl;
14052
+ var ENV_REF_RE = /^\$(?:([A-Za-z_][A-Za-z0-9_]*)|\{([A-Za-z_][A-Za-z0-9_]*)\})$/;
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
+ }
14057
14065
  return "http://localhost:8888";
14058
14066
  }
14059
- function sanitizeBankMap(map2) {
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
+ }
14076
+ function sanitizeBankValue(value, env = process.env) {
14077
+ if (typeof value !== "string")
14078
+ return;
14079
+ const trimmed = value.trim();
14080
+ if (!trimmed)
14081
+ return;
14082
+ const match = trimmed.match(ENV_REF_RE);
14083
+ if (!match)
14084
+ return trimmed;
14085
+ const envName = match[1] ?? match[2];
14086
+ if (!envName)
14087
+ return;
14088
+ const envValue = env[envName]?.trim();
14089
+ return envValue || undefined;
14090
+ }
14091
+ function sanitizeBankMap(map2, env = process.env) {
14060
14092
  if (!map2 || typeof map2 !== "object" || Array.isArray(map2))
14061
14093
  return {};
14062
14094
  const out = {};
14063
14095
  for (const [key, value] of Object.entries(map2)) {
14064
- if (typeof key === "string" && typeof value === "string" && key.trim() && value.trim()) {
14065
- out[key.trim()] = value.trim();
14096
+ const cleanKey = key.trim();
14097
+ const cleanValue = sanitizeBankValue(value, env);
14098
+ if (cleanKey && cleanValue) {
14099
+ out[cleanKey] = cleanValue;
14066
14100
  }
14067
14101
  }
14068
14102
  return out;
14069
14103
  }
14070
14104
  var CONFIG = {
14071
- baseUrl: getBaseUrl(),
14105
+ baseUrl: resolveBaseUrl(fileConfig),
14106
+ apiKey: resolveApiKey(fileConfig),
14072
14107
  similarityThreshold: fileConfig.similarityThreshold ?? DEFAULTS.similarityThreshold,
14073
14108
  maxMemories: fileConfig.maxMemories ?? DEFAULTS.maxMemories,
14074
14109
  maxProjectMemories: fileConfig.maxProjectMemories ?? DEFAULTS.maxProjectMemories,
14075
14110
  maxProfileItems: fileConfig.maxProfileItems ?? DEFAULTS.maxProfileItems,
14076
14111
  injectProfile: fileConfig.injectProfile ?? DEFAULTS.injectProfile,
14077
14112
  bankPrefix: fileConfig.bankPrefix ?? DEFAULTS.bankPrefix,
14078
- userBank: fileConfig.userBank,
14079
- projectBank: fileConfig.projectBank,
14113
+ userBank: sanitizeBankValue(fileConfig.userBank),
14114
+ projectBank: sanitizeBankValue(fileConfig.projectBank),
14080
14115
  maxTokens: fileConfig.maxTokens ?? DEFAULTS.maxTokens,
14081
14116
  budget: fileConfig.budget ?? DEFAULTS.budget,
14082
14117
  keywordPatterns: [
@@ -14137,9 +14172,13 @@ class HindsightClientWrapper {
14137
14172
  if (!isConfigured()) {
14138
14173
  throw new Error("Hindsight baseUrl not configured");
14139
14174
  }
14140
- log("client: creating HindsightClient", { baseUrl: CONFIG.baseUrl });
14175
+ log("client: creating HindsightClient", {
14176
+ baseUrl: CONFIG.baseUrl,
14177
+ hasApiKey: !!CONFIG.apiKey
14178
+ });
14141
14179
  this.client = new HindsightClient({
14142
- baseUrl: CONFIG.baseUrl
14180
+ baseUrl: CONFIG.baseUrl,
14181
+ ...CONFIG.apiKey ? { apiKey: CONFIG.apiKey } : {}
14143
14182
  });
14144
14183
  }
14145
14184
  return this.client;
@@ -14232,7 +14271,10 @@ class HindsightClientWrapper {
14232
14271
  log("deleteMemory: start", { bank, memoryId });
14233
14272
  try {
14234
14273
  const url2 = `${CONFIG.baseUrl}/v1/default/banks/${bank}/memories/${memoryId}/observations`;
14235
- const response = await fetch(url2, { method: "DELETE" });
14274
+ const response = await fetch(url2, {
14275
+ method: "DELETE",
14276
+ ...CONFIG.apiKey ? { headers: { Authorization: `Bearer ${CONFIG.apiKey}` } } : {}
14277
+ });
14236
14278
  if (!response.ok) {
14237
14279
  const text = await response.text();
14238
14280
  log("deleteMemory: http error", { status: response.status, body: text });
@@ -14458,9 +14500,16 @@ function resolveBanks(input, options = {}) {
14458
14500
  let matchedAgent;
14459
14501
  let matchedAlias;
14460
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
+ }
14461
14510
  const alias = input.projectBankAlias?.trim() || undefined;
14462
14511
  let runtimeAliasBank;
14463
- if (alias !== undefined) {
14512
+ if (project === undefined && alias !== undefined) {
14464
14513
  const hasAlias = Object.prototype.hasOwnProperty.call(cfgRuntimeBanks, alias);
14465
14514
  const resolved = hasAlias ? cfgRuntimeBanks[alias] : undefined;
14466
14515
  if (typeof resolved !== "string" || !resolved.trim()) {
@@ -14481,15 +14530,6 @@ function resolveBanks(input, options = {}) {
14481
14530
  projectSource = "runtimeProjectBanks";
14482
14531
  matchedAlias = alias;
14483
14532
  }
14484
- if (project === undefined) {
14485
- const agentMatch = matchAgentBank(input.agent, cfgAgentBanks);
14486
- if (agentMatch !== undefined) {
14487
- project = agentMatch.bank;
14488
- projectSource = "agentProjectBanks";
14489
- matchedAgent = input.agent;
14490
- matchedAgentPattern = agentMatch.pattern;
14491
- }
14492
- }
14493
14533
  if (project === undefined && cfgProjectBank) {
14494
14534
  project = cfgProjectBank;
14495
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;IAaX,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;;;;;;;IAmB3C,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"}
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"}
@@ -72,11 +72,12 @@ export interface ResolvedBanks {
72
72
  /**
73
73
  * Pure per-call bank resolver implementing project bank precedence:
74
74
  *
75
- * 1. `HINDSIGHT_PROJECT_BANK_ID` env var
76
- * 2. `HINDSIGHT_BANK_ID` env var (legacy fallback)
77
- * 3. Runtime project bank alias (`projectBankAlias` resolved against
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;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE,mBAAwB,GAChC,aAAa,CA2Ef"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shodocan/opencode-hindsight",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "OpenCode plugin that gives coding agents persistent memory using Hindsight",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",