opencode-irf 0.0.5 → 0.0.8
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/irf.d.ts +4 -0
- package/dist/irf.d.ts.map +1 -0
- package/dist/irf.js +125 -626
- package/dist/irf.js.map +1 -0
- package/dist/src/discover.d.ts +11 -0
- package/dist/src/discover.d.ts.map +1 -0
- package/dist/src/discover.js +92 -0
- package/dist/src/discover.js.map +1 -0
- package/dist/src/process.d.ts +26 -0
- package/dist/src/process.d.ts.map +1 -0
- package/dist/src/process.js +56 -0
- package/dist/src/process.js.map +1 -0
- package/dist/src/prompt.d.ts +7 -0
- package/dist/src/prompt.d.ts.map +1 -0
- package/dist/src/prompt.js +84 -0
- package/dist/src/prompt.js.map +1 -0
- package/dist/src/schema.d.ts +69 -0
- package/dist/src/schema.d.ts.map +1 -0
- package/dist/src/schema.js +48 -0
- package/dist/src/schema.js.map +1 -0
- package/dist/src/session.d.ts +23 -0
- package/dist/src/session.d.ts.map +1 -0
- package/dist/src/session.js +112 -0
- package/dist/src/session.js.map +1 -0
- package/dist/src/utils/compare.d.ts +18 -0
- package/dist/src/utils/compare.d.ts.map +1 -0
- package/dist/src/utils/compare.js +74 -0
- package/dist/src/utils/compare.js.map +1 -0
- package/dist/src/utils/extractLlmError.d.ts +13 -0
- package/dist/src/utils/extractLlmError.d.ts.map +1 -0
- package/dist/src/utils/extractLlmError.js +12 -0
- package/dist/src/utils/extractLlmError.js.map +1 -0
- package/dist/src/utils/safe.d.ts +12 -0
- package/dist/src/utils/safe.d.ts.map +1 -0
- package/dist/src/utils/safe.js +31 -0
- package/dist/src/utils/safe.js.map +1 -0
- package/dist/src/utils/stripCodeFences.d.ts +2 -0
- package/dist/src/utils/stripCodeFences.d.ts.map +1 -0
- package/dist/src/utils/stripCodeFences.js +9 -0
- package/dist/src/utils/stripCodeFences.js.map +1 -0
- package/dist/src/utils/validate.d.ts +19 -0
- package/dist/src/utils/validate.d.ts.map +1 -0
- package/dist/src/utils/validate.js +30 -0
- package/dist/src/utils/validate.js.map +1 -0
- package/package.json +6 -4
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// compare byte sizes of two strings and return diff stats
|
|
2
|
+
export const compareBytes = (file, original, generated) => {
|
|
3
|
+
const originalBytes = new TextEncoder().encode(original).length;
|
|
4
|
+
const generatedBytes = new TextEncoder().encode(generated).length;
|
|
5
|
+
const difference = originalBytes - generatedBytes;
|
|
6
|
+
const percentChange = originalBytes === 0 ? 0 : (difference / originalBytes) * 100;
|
|
7
|
+
return {
|
|
8
|
+
file,
|
|
9
|
+
originalBytes,
|
|
10
|
+
generatedBytes,
|
|
11
|
+
difference,
|
|
12
|
+
percentChange,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
// format a percent change string with direction indicator
|
|
16
|
+
const formatChange = (difference, percentChange) => {
|
|
17
|
+
if (difference > 0) {
|
|
18
|
+
return '\u2212' + percentChange.toFixed(1) + '%';
|
|
19
|
+
}
|
|
20
|
+
return '+' + Math.abs(percentChange).toFixed(1) + '%';
|
|
21
|
+
};
|
|
22
|
+
// format a single comparison result as a table row
|
|
23
|
+
// uses ASCII indicators (+/-) for consistent monospace alignment
|
|
24
|
+
export const formatRow = (result) => {
|
|
25
|
+
const changeStr = formatChange(result.difference, result.percentChange);
|
|
26
|
+
return (result.file.padEnd(25)
|
|
27
|
+
+ result.originalBytes.toString().padStart(10)
|
|
28
|
+
+ result.generatedBytes.toString().padStart(12)
|
|
29
|
+
+ result.difference.toString().padStart(8)
|
|
30
|
+
+ changeStr.padStart(10));
|
|
31
|
+
};
|
|
32
|
+
// summarize an array of comparison results into totals
|
|
33
|
+
export const summarize = (results) => {
|
|
34
|
+
const totalOriginal = results.reduce((sum, r) => sum + r.originalBytes, 0);
|
|
35
|
+
const totalGenerated = results.reduce((sum, r) => sum + r.generatedBytes, 0);
|
|
36
|
+
const totalDifference = totalOriginal - totalGenerated;
|
|
37
|
+
const totalPercentChange = totalOriginal === 0 ? 0 : (totalDifference / totalOriginal) * 100;
|
|
38
|
+
return {
|
|
39
|
+
totalOriginal,
|
|
40
|
+
totalGenerated,
|
|
41
|
+
totalDifference,
|
|
42
|
+
totalPercentChange,
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
// build a full comparison table as a string
|
|
46
|
+
export const buildTable = (results) => {
|
|
47
|
+
if (results.length === 0) {
|
|
48
|
+
return '';
|
|
49
|
+
}
|
|
50
|
+
const lines = [];
|
|
51
|
+
const header = 'File'.padEnd(25) + 'Original'.padStart(10)
|
|
52
|
+
+ 'Generated'.padStart(12) + 'Diff'.padStart(8) + 'Change'.padStart(10);
|
|
53
|
+
const separator = '\u2500'.repeat(65);
|
|
54
|
+
lines.push(header);
|
|
55
|
+
lines.push(separator);
|
|
56
|
+
const sorted = [...results].sort((a, b) => Math.abs(b.difference) - Math.abs(a.difference));
|
|
57
|
+
for (const result of sorted) {
|
|
58
|
+
lines.push(formatRow(result));
|
|
59
|
+
}
|
|
60
|
+
const totals = summarize(results);
|
|
61
|
+
lines.push(separator);
|
|
62
|
+
const totalChangeStr = formatChange(totals.totalDifference, totals.totalPercentChange);
|
|
63
|
+
lines.push('TOTAL'.padEnd(25)
|
|
64
|
+
+ totals.totalOriginal.toString().padStart(10)
|
|
65
|
+
+ totals.totalGenerated.toString().padStart(12)
|
|
66
|
+
+ totals.totalDifference.toString().padStart(8)
|
|
67
|
+
+ totalChangeStr.padStart(10));
|
|
68
|
+
lines.push('');
|
|
69
|
+
lines.push((totals.totalDifference > 0 ? 'SAVED ' : 'INCREASED ')
|
|
70
|
+
+ Math.abs(totals.totalDifference) + ' bytes ('
|
|
71
|
+
+ Math.abs(totals.totalPercentChange).toFixed(1) + '%)');
|
|
72
|
+
return lines.join('\n');
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/utils/compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type MessageInfo = {
|
|
2
|
+
role: string;
|
|
3
|
+
providerID?: string;
|
|
4
|
+
modelID?: string;
|
|
5
|
+
error?: {
|
|
6
|
+
name?: string;
|
|
7
|
+
data?: {
|
|
8
|
+
message?: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export declare const extractLlmError: (info: MessageInfo) => string | null;
|
|
13
|
+
//# sourceMappingURL=extractLlmError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractLlmError.d.ts","sourceRoot":"","sources":["../../../src/utils/extractLlmError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE;YACL,OAAO,CAAC,EAAE,MAAM,CAAA;SACjB,CAAA;KACF,CAAA;CACF,CAAA;AAGD,eAAO,MAAM,eAAe,GAAI,MAAM,WAAW,KAAG,MAAM,GAAG,IAW5D,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// extract error message from LLM response info
|
|
2
|
+
export const extractLlmError = (info) => {
|
|
3
|
+
if (!info.error) {
|
|
4
|
+
return null;
|
|
5
|
+
}
|
|
6
|
+
const err = info.error;
|
|
7
|
+
if (err.data && err.data.message) {
|
|
8
|
+
return err.data.message;
|
|
9
|
+
}
|
|
10
|
+
return err.name || 'Unknown LLM error';
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=extractLlmError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractLlmError.js","sourceRoot":"","sources":["../../../src/utils/extractLlmError.ts"],"names":[],"mappings":"AAYA,+CAA+C;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAiB,EAAiB,EAAE;IAClE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;IACtB,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAA;IACzB,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,IAAI,mBAAmB,CAAA;AACxC,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type Result<T, E = string> = {
|
|
2
|
+
data: T;
|
|
3
|
+
error: null;
|
|
4
|
+
} | {
|
|
5
|
+
data: null;
|
|
6
|
+
error: E;
|
|
7
|
+
};
|
|
8
|
+
type SafeResult<T> = Result<T, Error>;
|
|
9
|
+
export declare const safe: <T>(fn: () => T) => SafeResult<T>;
|
|
10
|
+
export declare const safeAsync: <T>(fn: () => Promise<T>) => Promise<SafeResult<T>>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=safe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../src/utils/safe.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,IAC5B;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AAE5B,KAAK,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAErC,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,IAAI,MAAM,CAAC,KAAG,UAAU,CAAC,CAAC,CAajD,CAAA;AAED,eAAO,MAAM,SAAS,GAAU,CAAC,EAAE,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAa9E,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const safe = (fn) => {
|
|
2
|
+
try {
|
|
3
|
+
const data = fn();
|
|
4
|
+
return {
|
|
5
|
+
data,
|
|
6
|
+
error: null,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
return {
|
|
11
|
+
data: null,
|
|
12
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export const safeAsync = async (fn) => {
|
|
17
|
+
try {
|
|
18
|
+
const data = await fn();
|
|
19
|
+
return {
|
|
20
|
+
data,
|
|
21
|
+
error: null,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
return {
|
|
26
|
+
data: null,
|
|
27
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=safe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe.js","sourceRoot":"","sources":["../../../src/utils/safe.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,EAAW,EAAiB,EAAE;IACpD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,EAAE,CAAA;QACjB,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,IAAI;SACZ,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAK,EAAoB,EAA0B,EAAE;IACjF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,EAAE,CAAA;QACvB,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,IAAI;SACZ,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAA;IACH,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stripCodeFences.d.ts","sourceRoot":"","sources":["../../../src/utils/stripCodeFences.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,MAK9C,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// strip markdown code fences from LLM response text
|
|
2
|
+
// handles fences at line start or preceded by text on the same line
|
|
3
|
+
export const stripCodeFences = (text) => {
|
|
4
|
+
return text
|
|
5
|
+
.replace(/^.*```(?:json)?\s*\n?/m, '')
|
|
6
|
+
.replace(/\n?```\s*$/m, '')
|
|
7
|
+
.trim();
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=stripCodeFences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stripCodeFences.js","sourceRoot":"","sources":["../../../src/utils/stripCodeFences.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAU,EAAE;IACtD,OAAO,IAAI;SACR,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;SACrC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,IAAI,EAAE,CAAA;AACX,CAAC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
type ValidateJsonSuccess<T> = {
|
|
3
|
+
data: T;
|
|
4
|
+
error: null;
|
|
5
|
+
};
|
|
6
|
+
type ValidateJsonParseError = {
|
|
7
|
+
data: null;
|
|
8
|
+
error: 'parse';
|
|
9
|
+
};
|
|
10
|
+
type ValidateJsonSchemaError = {
|
|
11
|
+
data: null;
|
|
12
|
+
error: 'schema';
|
|
13
|
+
issues: z.core.$ZodIssue[];
|
|
14
|
+
};
|
|
15
|
+
type ValidateJsonResult<T> = ValidateJsonSuccess<T> | ValidateJsonParseError | ValidateJsonSchemaError;
|
|
16
|
+
export declare const validateJson: <T>(json: string, schema: z.ZodType<T>) => ValidateJsonResult<T>;
|
|
17
|
+
export declare const formatValidationError: (result: ValidateJsonParseError | ValidateJsonSchemaError) => string;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/utils/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAG5B,KAAK,mBAAmB,CAAC,CAAC,IAAI;IAC5B,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,IAAI,CAAA;CACZ,CAAA;AAED,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA;CAC3B,CAAA;AAED,KAAK,kBAAkB,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,GAAG,sBAAsB,GAAG,uBAAuB,CAAA;AAEtG,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,MAAM,MAAM,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAG,kBAAkB,CAAC,CAAC,CAsBxF,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,QAAQ,sBAAsB,GAAG,uBAAuB,KAAG,MAQhG,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { safe } from './safe';
|
|
2
|
+
export const validateJson = (json, schema) => {
|
|
3
|
+
const { data: parsed, error } = safe(() => JSON.parse(json));
|
|
4
|
+
if (error) {
|
|
5
|
+
return {
|
|
6
|
+
data: null,
|
|
7
|
+
error: 'parse',
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
const result = schema.safeParse(parsed);
|
|
11
|
+
if (!result.success) {
|
|
12
|
+
return {
|
|
13
|
+
data: null,
|
|
14
|
+
error: 'schema',
|
|
15
|
+
issues: result.error.issues,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
data: result.data,
|
|
20
|
+
error: null,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export const formatValidationError = (result) => {
|
|
24
|
+
if (result.error === 'parse') {
|
|
25
|
+
return 'Invalid JSON. Return valid JSON.';
|
|
26
|
+
}
|
|
27
|
+
const issues = result.issues.map((i) => ' - ' + i.path.join('.') + ': ' + i.message).join('\n');
|
|
28
|
+
return 'Schema validation failed:\n' + issues + '\n\nFix the issues and try again.';
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/utils/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAoB7B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,IAAY,EAAE,MAAoB,EAAyB,EAAE;IAC3F,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5D,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;YACL,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,OAAO;SACf,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;SAC5B,CAAA;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,IAAI;KACZ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAwD,EAAU,EAAE;IACxG,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,kCAAkC,CAAA;IAC3C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEhG,OAAO,6BAA6B,GAAG,MAAM,GAAG,mCAAmC,CAAA;AACrF,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-irf",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"description": "OpenCode plugin that converts unstructured instructions into structured rules using speech act theory and deontic logic.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"opencode",
|
|
@@ -37,15 +37,17 @@
|
|
|
37
37
|
"LICENSE"
|
|
38
38
|
],
|
|
39
39
|
"scripts": {
|
|
40
|
-
"build": "npm run clean &&
|
|
40
|
+
"build": "npm run clean && tsc",
|
|
41
41
|
"clean": "rm -rf dist",
|
|
42
42
|
"prepublishOnly": "npm run build"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"zod": "
|
|
45
|
+
"zod": "4.1.8"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@opencode-ai/plugin": "
|
|
48
|
+
"@opencode-ai/plugin": "1.1.12",
|
|
49
|
+
"@types/node": "^25.1.0",
|
|
50
|
+
"typescript": "5.9.3"
|
|
49
51
|
},
|
|
50
52
|
"peerDependencies": {
|
|
51
53
|
"@opencode-ai/plugin": ">=0.13.7"
|