facult 2.17.2 → 2.17.4
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/docs/codex-plugin.md +14 -1
- package/docs/reference.md +5 -1
- package/package.json +1 -1
- package/src/ai.ts +9 -2
package/docs/codex-plugin.md
CHANGED
|
@@ -40,7 +40,20 @@ Use the narrow setup command for normal installs:
|
|
|
40
40
|
fclt setup codex-plugin
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
That updates only the local `fclt` plugin payload under `~/plugins/fclt
|
|
43
|
+
That updates only the local `fclt` plugin payload under `~/plugins/fclt`
|
|
44
|
+
and merges an entry into `~/.agents/plugins/marketplace.json`. The default
|
|
45
|
+
marketplace name is `hack-local`; if the marketplace file already has a
|
|
46
|
+
non-empty `name`, fclt preserves it and installs from that name. The generated
|
|
47
|
+
entry uses Codex schema-valid policy values, including
|
|
48
|
+
`installation: "AVAILABLE"` and `authentication: "ON_INSTALL"`.
|
|
49
|
+
|
|
50
|
+
When the `codex` command is available, setup runs
|
|
51
|
+
`codex plugin add fclt@<marketplace> --json`. Codex installs the plugin cache
|
|
52
|
+
under `~/.codex/plugins/cache/<marketplace>/fclt/` using its own version
|
|
53
|
+
directory.
|
|
54
|
+
|
|
55
|
+
It does not enter managed mode, adopt Codex state, render
|
|
56
|
+
`~/.codex/AGENTS.md`, or touch existing Codex skills/rules/config.
|
|
44
57
|
|
|
45
58
|
Useful flags:
|
|
46
59
|
|
package/docs/reference.md
CHANGED
|
@@ -74,7 +74,11 @@ fclt managed
|
|
|
74
74
|
fclt unmanage <tool>
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
`setup codex-plugin` is the narrow path for exposing the bundled fclt Codex
|
|
77
|
+
`setup codex-plugin` is the narrow path for exposing the bundled fclt Codex
|
|
78
|
+
plugin without entering managed mode. It writes only `~/plugins/fclt`, the
|
|
79
|
+
local marketplace entry, and the Codex plugin install/cache when Codex is
|
|
80
|
+
available. Managed mode writes rendered output into tool homes. Read
|
|
81
|
+
[Managed mode](./managed-mode.md) before using it on an existing setup.
|
|
78
82
|
|
|
79
83
|
## Writeback and evolution
|
|
80
84
|
|
package/package.json
CHANGED
package/src/ai.ts
CHANGED
|
@@ -599,6 +599,7 @@ async function resolveAssetSelection(args: {
|
|
|
599
599
|
homeDir: string;
|
|
600
600
|
rootDir: string;
|
|
601
601
|
asset: string;
|
|
602
|
+
repairGraph?: boolean;
|
|
602
603
|
}): Promise<{
|
|
603
604
|
assetRef?: string;
|
|
604
605
|
assetId?: string;
|
|
@@ -607,7 +608,7 @@ async function resolveAssetSelection(args: {
|
|
|
607
608
|
await ensureAiGraphPath({
|
|
608
609
|
homeDir: args.homeDir,
|
|
609
610
|
rootDir: args.rootDir,
|
|
610
|
-
repair:
|
|
611
|
+
repair: args.repairGraph,
|
|
611
612
|
});
|
|
612
613
|
const graph = await loadGraph({
|
|
613
614
|
homeDir: args.homeDir,
|
|
@@ -987,7 +988,11 @@ export async function proposeEvolution(args: {
|
|
|
987
988
|
: null;
|
|
988
989
|
|
|
989
990
|
const candidates = writebacks.filter((entry) => {
|
|
990
|
-
if (
|
|
991
|
+
if (
|
|
992
|
+
entry.status === "dismissed" ||
|
|
993
|
+
entry.status === "resolved" ||
|
|
994
|
+
entry.status === "superseded"
|
|
995
|
+
) {
|
|
991
996
|
return false;
|
|
992
997
|
}
|
|
993
998
|
if (entry.evidence.length === 0) {
|
|
@@ -1123,11 +1128,13 @@ export async function assessEvolution(args: {
|
|
|
1123
1128
|
homeDir,
|
|
1124
1129
|
rootDir: args.rootDir,
|
|
1125
1130
|
asset: args.asset,
|
|
1131
|
+
repairGraph: false,
|
|
1126
1132
|
})
|
|
1127
1133
|
: null;
|
|
1128
1134
|
const target = filterAsset?.assetRef ?? args.asset;
|
|
1129
1135
|
const writebacks = (await listWritebacks({ homeDir, rootDir: args.rootDir }))
|
|
1130
1136
|
.filter((entry) => entry.status !== "dismissed")
|
|
1137
|
+
.filter((entry) => entry.status !== "resolved")
|
|
1131
1138
|
.filter((entry) => entry.status !== "superseded")
|
|
1132
1139
|
.filter((entry) => entry.evidence.length > 0)
|
|
1133
1140
|
.filter((entry) => {
|