@jskit-ai/agent-docs 0.1.43 → 0.1.45

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.
@@ -28,20 +28,7 @@ npx @jskit-ai/create-app exampleapp --target . --force --tenancy-mode <mode>
28
28
  npm install
29
29
  ```
30
30
 
31
- After that promotion, the overwritten app `AGENTS.md` stays deliberately small. Use `jskit session` for issue-driven work; session state and prompts live under `.jskit/sessions/` in the target app.
32
-
33
- Issue sessions are executable workflow state, not prose instructions. The important durable files are:
34
-
35
- - `issue.md` and `issue_title` for the approved GitHub issue.
36
- - `plan_details.md` for the confirmed implementation details gathered before planning.
37
- - `plan.md` for the approved implementation plan.
38
- - `agent_decisions.md` for concise decisions and why they were made.
39
- - `.jskit/APP_BLUEPRINT.md` for durable app/product/architecture memory that grows across issues.
40
- - `review_passes/`, `checks/`, `ui_checks/`, and `command_log.jsonl` for review, verification, UI check, and command receipts.
41
-
42
- The Deep UI Check steps use the saved issue classification: server-only work can be skipped with a receipt, possible UI work can be skipped only with an explicit reason, and definite UI work must run. If the User Check fails, JSKIT starts a new cycle under `cycles/cycle_###/` and cycle-scoped receipts under `steps/cycle_###/`; do not delete older cycle receipts.
43
-
44
- Studio and other tools should read `jskit session <session_id> --json` rather than scraping those files directly. Manual agents should follow the current `jskit session <session_id> step` output and avoid recreating the old workboard workflow.
31
+ After that promotion, the overwritten app `AGENTS.md` stays deliberately small. Use it with the distributed JSKIT agent docs when planning or implementing app changes. The durable app memory lives in `.jskit/APP_BLUEPRINT.md` and should describe product and architecture decisions, not become an implementation task list.
45
32
 
46
33
  After creating the real app scaffolding (the base shell, not the seed wrapper), you will need to run `npm install` to install dependencies.
47
34
 
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "@jskit-ai/agent-docs",
3
- "version": "0.1.43",
3
+ "version": "0.1.45",
4
4
  "description": "Distributed JSKIT agent references, prompts, guides, and generated reference maps.",
5
5
  "type": "module",
6
6
  "files": [
7
- "DISTR_AGENT.md",
8
7
  "guide",
9
8
  "patterns",
10
9
  "reference",
@@ -23,7 +22,6 @@
23
22
  "keywords": [
24
23
  "jskit",
25
24
  "agent",
26
- "docs",
27
- "session"
25
+ "docs"
28
26
  ]
29
27
  }
@@ -1532,5 +1532,6 @@ Exports
1532
1532
  - `loadInstalledPackageDescriptor({ appRoot, packageId, installedPackageState, required = false })`
1533
1533
  - `resolveDescriptorPathForInstalledPackage({ appRoot, packageId, installedPackageState, required = false })`
1534
1534
  Local functions
1535
+ - `resolveNodeModulesDescriptorCandidatePaths({ appRoot, packageId })`
1535
1536
  - `resolveDescriptorCandidatePaths({ appRoot, packageId, installedPackageState })`
1536
1537
  - `normalizeDescriptorPayload(descriptorModule)`
@@ -25,6 +25,7 @@ Exports
25
25
  ### `src/server/appBlueprint.js`
26
26
  Exports
27
27
  - `APP_BLUEPRINT_RELATIVE_PATH`
28
+ - `APP_BLUEPRINT_PROMPT_DIRECTORY`
28
29
  - `APP_PROMPT_OVERRIDE_RELATIVE_ROOT`
29
30
  - `extractAppBlueprintText(value = "")`
30
31
  - `readAppBlueprint({ targetRoot = process.cwd() } = {})`
@@ -33,6 +34,11 @@ Exports
33
34
  - `resolveAppBlueprintPaths(targetRoot = process.cwd())`
34
35
  - `writeAppBlueprint({ targetRoot = process.cwd(), appBlueprint = "" } = {})`
35
36
  Local functions
37
+ - `normalizeText(value)`
38
+ - `fileExists(filePath)`
39
+ - `readTextIfExists(filePath)`
40
+ - `writeTextFile(filePath, value)`
41
+ - `renderTemplate(source, values = {})`
36
42
  - `readAppPromptTemplate(paths, templateName)`
37
43
 
38
44
  ### `src/server/cliEntrypoint.js`
@@ -670,23 +676,6 @@ Local functions
670
676
  Exports
671
677
  - `runPackageUpdateCommand(ctx = {}, { positional, options, cwd, io }, { runCommandAdd })`
672
678
 
673
- ### `src/server/commandHandlers/session.js`
674
- Exports
675
- - `createSessionCommands()`
676
- Local functions
677
- - `writeJson(stdout, payload)`
678
- - `writeSessionText(stdout, payload)`
679
- - `readStream(stream)`
680
- - `resolveInputFilePath(cwd, filePath)`
681
- - `resolveTextInput({ codePrefix, fileOption, inlineOptions = {}, io = {}, repairCommand, cwd, stdinOption, textOption, sessionId })`
682
- - `resolveStepInputs({ inlineOptions = {}, io = {}, cwd, sessionId })`
683
- - `normalizeStepOptions(inlineOptions = {})`
684
- - `resolveListArchiveOption(options = {})`
685
- - `runSessionStepCommand({ cwd, inlineOptions = {}, io = {}, sessionId })`
686
- - `runNextSessionStep({ cwd, sessionId })`
687
- - `runSkipSessionStep({ cwd, inlineOptions = {}, io = {}, sessionId })`
688
- - `runDeslopSessionStep({ cwd, sessionId })`
689
-
690
679
  ### `src/server/commandHandlers/shared.js`
691
680
  Exports
692
681
  - `createCommandHandlerShared(ctx = {})`
@@ -781,24 +770,34 @@ Local functions
781
770
  Exports
782
771
  - `HELPER_MAP_JSON_RELATIVE_PATH`
783
772
  - `HELPER_MAP_MARKDOWN_RELATIVE_PATH`
784
- - `buildHelperMap({ targetRoot })`
773
+ - `buildHelperMap({ targetRoot, previousMap = null })`
785
774
  - `readHelperMap({ targetRoot })`
786
775
  - `updateHelperMap({ targetRoot })`
787
776
  Local functions
788
777
  - `pathExists(filePath)`
789
778
  - `readJsonFile(filePath)`
779
+ - `readFileHash(filePath)`
790
780
  - `normalizePackageDependencies(packageJson = {})`
791
781
  - `classifySymbol(name = "")`
792
782
  - `createExportAnalysisProject()`
793
- - `kindFromDeclaration(declaration, exportName = "")`
794
783
  - `addSymbol(symbols, symbol)`
784
+ - `compilerNodeHasModifier(node, modifierKind)`
785
+ - `exportedDeclarationName(node)`
786
+ - `addExportedDeclarationSymbol(symbols, node, kind = "export")`
787
+ - `bindingNameTexts(bindingName, names = [])`
788
+ - `addVariableStatementExports(symbols, statement)`
789
+ - `addNamedExportSymbols(symbols, exportClause)`
795
790
  - `extractExportedSymbols(sourceFile)`
796
791
  - `extractVueScriptSource(source = "", filePath = "")`
797
792
  - `addCodeFileToProject(project, file)`
798
793
  - `walkCodeFiles(rootPath, relativeRoot = "")`
799
794
  - `collectAppExports(targetRoot)`
800
795
  - `flattenPackageExports(exportsField)`
801
- - `collectJskitPackageExports(targetRoot, packageJson = {})`
796
+ - `packageExportTargetRecords(packageRoot, exportTargets = [])`
797
+ - `packageExportFingerprint({ installedPackageJson = {}, packageName = "", targetRecords = [] } = {})`
798
+ - `cachedPackageExports(previousPackagesByName = new Map(), packageName = "", fingerprint = "")`
799
+ - `previousPackageMap(previousMap = null)`
800
+ - `collectJskitPackageExports(targetRoot, packageJson = {}, previousMap = null)`
802
801
  - `renderExportList(symbols = [])`
803
802
  - `renderHelperMapMarkdown(map)`
804
803
 
@@ -811,337 +810,6 @@ Exports
811
810
  Exports
812
811
  - `runCli`
813
812
 
814
- ### `src/server/sessionRuntime.js`
815
- Exports
816
- - `SESSION_STATUS`
817
- - `STEP_DEFINITIONS`
818
- - `STEP_IDS`
819
- - `STEP_PRECONDITION_NAMES`
820
- - `abandonSession({ targetRoot = process.cwd(), sessionId } = {})`
821
- - `advanceSessionStep({ targetRoot = process.cwd(), sessionId } = {})`
822
- - `adoptDependenciesInstalled({ targetRoot = process.cwd(), sessionId, message = "" } = {})`
823
- - `adoptCodexThreadId({ targetRoot = process.cwd(), sessionId, codexThreadId } = {})`
824
- - `buildSessionResponse`
825
- - `buildSessionErrorResponse`
826
- - `createSession({ targetRoot = process.cwd(), sessionId = "", now = new Date() } = {})`
827
- - `createSessionId`
828
- - `extractIssueTitle(value = "")`
829
- - `extractIssueText(value = "")`
830
- - `inspectSession({ targetRoot = process.cwd(), sessionId } = {})`
831
- - `inspectSessionDiff({ targetRoot = process.cwd(), sessionId } = {})`
832
- - `inspectSessionDetails({ targetRoot = process.cwd(), sessionId } = {})`
833
- - `isValidSessionId`
834
- - `listSessions({ targetRoot = process.cwd(), archive = "active" } = {})`
835
- - `renderTemplate`
836
- - `recordDependenciesInstalled(paths, { message = "Installed Node dependencies in the session worktree.", preconditions = [] } = {})`
837
- - `rewindSession({ targetRoot = process.cwd(), sessionId, stepId } = {})`
838
- - `resolveSessionPaths`
839
- - `runSessionStep({ targetRoot = process.cwd(), sessionId, options = {} } = {})`
840
- - `runSessionStepAction({ targetRoot = process.cwd(), sessionId, action, options = {} } = {})`
841
- Local functions
842
- - `invalidSessionIdError(sessionId = "")`
843
- - `invalidSessionIdResponse({ targetRoot, sessionId })`
844
- - `existingSessionContext({ targetRoot = process.cwd(), sessionId } = {})`
845
- - `withExistingSession(input, handler)`
846
- - `extractMarkedText(value = "", marker = "")`
847
- - `writePromptArtifact(paths, fileName, prompt)`
848
- - `commandText(command, args = [])`
849
- - `cycleRootPath(paths, cycle)`
850
- - `commandOutputSummary(output = "")`
851
- - `appendCommandLog(paths, { args = [], command, cwd = "", kind = "command", result } = {})`
852
- - `runLoggedCommand(paths, kind, command, args = [], options = {})`
853
- - `readWorktreePackageJson(worktree)`
854
- - `packageScriptRunArgs(packageManager, scriptName)`
855
- - `packageScriptCommandForWorktree(worktree, scriptName, { preferredPackageManager = "" } = {})`
856
- - `sessionPackageScriptEnv(paths, scriptName)`
857
- - `packageScriptRepairCommand(paths, command, args)`
858
- - `packageScriptRecordName(scriptName)`
859
- - `writeSessionHookRecord(paths, scriptName, message)`
860
- - `runOptionalSessionPackageScript(paths, { failureCode, failureMessage, kind, preferredPackageManager = "", preconditions = [], scriptName, timeout = 1000 * 60 * 10 } = {})`
861
- - `runSessionFinalizationGuard(paths, preconditions = [])`
862
- - `runSessionProvisioningHook(paths, { preferredPackageManager = "", preconditions = [] } = {})`
863
- - `readGithubComments(paths)`
864
- - `writeGithubComments(paths, comments = {})`
865
- - `commentOnIssueOnce(paths, { bodyFile, issueUrl, purpose })`
866
- - `issueMetadataFromUrl(issueUrl = "")`
867
- - `writeIssueMetadataFiles(paths, { issueTitle = "", issueUrl = "" } = {})`
868
- - `normalizeArchiveFilter(archive = "active")`
869
- - `emptySessionDetails(response)`
870
- - `removeEmptyStaleWorktreeDirectory(paths)`
871
- - `createWorktree(paths, _options = {}, context = {})`
872
- - `recordDependencyInstallResult(paths, { message = "Installed Node dependencies in the session worktree.", preconditions = [] } = {})`
873
- - `parsePackageManager(value = "")`
874
- - `hasWorktreeFile(worktree, fileName)`
875
- - `dependencyInstallCommandForWorktree(worktree)`
876
- - `installDependencies(paths, _options = {}, context = {})`
877
- - `issueDefinitionPrompt(userInput, context)`
878
- - `renderIssuePrompt(paths, options = {}, context = {})`
879
- - `titleFromIssue(issueText)`
880
- - `createIssue(paths, _options = {}, context = {})`
881
- - `submitIssue(paths, _options = {}, context = {})`
882
- - `renderIssueFilePrompt(paths, context = {})`
883
- - `makePlan(paths, _options = {}, context = {})`
884
- - `renderPlanExecutionPrompt(paths, _options = {}, context = {})`
885
- - `worktreeStatus(worktree)`
886
- - `untrackedFiles(worktree)`
887
- - `untrackedFileDiff(worktree, filePath)`
888
- - `untrackedFilesDiff(worktree)`
889
- - `removeSessionPath(paths, ...parts)`
890
- - `removeSessionRootFile(paths, fileName)`
891
- - `removePromptArtifact(paths, fileName)`
892
- - `removeGlobalCodexResult(paths, stepId)`
893
- - `removeCycleCodexResults(paths, stepId)`
894
- - `removeCodexResult(paths, stepId)`
895
- - `removeGithubCommentPurpose(paths, purpose)`
896
- - `removeCycleDirectories(paths)`
897
- - `removePlanArtifacts(paths)`
898
- - `removePlanExecutionArtifacts(paths)`
899
- - `targetIsAllowedRewindStep(stepId)`
900
- - `deletedStepIdsForRewindTarget(stepId)`
901
- - `removeStepRecordsForDeletedSteps(paths, deletedStepIds)`
902
- - `cancelDeletedStepArtifacts(paths, deletedStepIds)`
903
- - `commitWorktree(paths, { message, allowNoChanges = false } = {})`
904
- - `uniqueChangedFileList(entries = [])`
905
- - `changedFilesInWorktree(paths)`
906
- - `blueprintBaselinePath(paths)`
907
- - `isBlueprintRelativePath(filePath = "")`
908
- - `nonBlueprintChangedFiles(files = [])`
909
- - `hashWorktreeFile(paths, filePath)`
910
- - `buildDirtyFileSnapshot(paths, files = [])`
911
- - `writeBlueprintBaseline(paths)`
912
- - `readBlueprintBaseline(paths)`
913
- - `unexpectedBlueprintStepChanges(paths, changedFiles = [])`
914
- - `changedFilesSinceBase(paths)`
915
- - `nextReviewPassNumber(pass = "")`
916
- - `readCurrentReviewPass(paths)`
917
- - `writeCurrentReviewPass(paths, pass)`
918
- - `resolveReviewPassForPrompt(paths)`
919
- - `writeReviewPassJson(paths, pass, fileName, payload)`
920
- - `currentHead(paths)`
921
- - `renderReviewPrompt(paths)`
922
- - `renderResolveDeslopPrompt(paths, context = {})`
923
- - `acceptReviewChanges(paths, options = {}, context = {})`
924
- - `runAutomatedChecks(paths, { stepId }, _options = {}, context = {})`
925
- - `writeUiCheckJson(paths, fileName, payload)`
926
- - `runDeepUiCheck(paths, { stepId, phase }, _options = {}, context = {})`
927
- - `userCheck(paths, options = {})`
928
- - `readAcceptedChangesCommit(paths)`
929
- - `commitAcceptedChanges(paths, _options = {}, context = {})`
930
- - `updateBlueprint(paths, _options = {}, context = {})`
931
- - `readPackageJson(root)`
932
- - `doctorCommandForWorktree(worktree)`
933
- - `commitLinesSinceBase(paths)`
934
- - `readCheckSummaries(paths)`
935
- - `readUiCheckSummaries(paths)`
936
- - `readReviewPassSummaries(paths)`
937
- - `renderPullRequestFilePrompt(paths, context = {})`
938
- - `createPullRequestFile(paths, _options = {}, context = {})`
939
- - `issueNumberFromUrl(issueUrl)`
940
- - `parseJsonObject(value)`
941
- - `booleanOption(options = {}, ...names)`
942
- - `skipStepRequested(options = {})`
943
- - `skipStepReason(options = {}, stepId = "")`
944
- - `writeJsonFile(filePath, payload)`
945
- - `writeTextIfMissing(filePath, value)`
946
- - `writeSkippedIssueDraft(paths, reason)`
947
- - `writeSkippedReviewPass(paths, reason)`
948
- - `writeSkippedStepArtifacts(paths, stepId, reason)`
949
- - `skipCurrentStep(paths, stepId, options = {})`
950
- - `readPrState(paths, prUrl)`
951
- - `readCurrentBranchPrState(paths)`
952
- - `prStateIsMerged(prState)`
953
- - `prStateIsClosed(prState)`
954
- - `currentTargetBranch(targetRoot)`
955
- - `assertTargetRootCleanForBaseUpdate(paths)`
956
- - `removeSessionWorktree(paths)`
957
- - `writePrOutcome(paths, outcome)`
958
- - `mainCheckoutSyncPath(paths)`
959
- - `writeMainCheckoutSync(paths, payload = {})`
960
- - `assertTargetRootCanUpdateBase(paths, branch)`
961
- - `updateLocalBaseBranch(paths, baseBranch = "")`
962
- - `syncMainCheckout(paths, options = {}, context = {})`
963
- - `updateHelperMapBeforePr(paths)`
964
- - `createPr(paths, _options = {}, context = {})`
965
- - `preparePrMerge(paths, options = {}, context = {})`
966
- - `finalizePr(paths, options = {}, context = {})`
967
- - `finishSession(paths)`
968
- - `runNamedPreconditions(paths, names = [])`
969
- - `sessionStepError(paths, { code, message, repairCommand = "" } = {})`
970
- - `createIssueFileAction(paths, options = {}, context = {})`
971
- - `createGithubIssueAction(paths, options = {}, context = {})`
972
-
973
- ### `src/server/sessionRuntime/appReadiness.js`
974
- Exports
975
- - `inspectReadyJskitAppRoot(rootPath)`
976
- Local functions
977
- - `pathExists(filePath)`
978
- - `directoryExists(filePath)`
979
-
980
- ### `src/server/sessionRuntime/constants.js`
981
- Exports
982
- - `PROMPT_DIRECTORY`
983
- - `SESSION_ID_PATTERN`
984
- - `SESSION_STATUS`
985
- - `SESSION_WORKFLOW_VERSION`
986
- - `DEPENDENCIES_INSTALL_RESULT_FILE`
987
- - `REVIEW_PASS_LIMIT`
988
- - `CYCLE_STEP_IDS`
989
- - `STEP_DEFINITION_BY_ID`
990
- - `STEP_DEFINITIONS`
991
- - `STEP_IDS`
992
- - `STEP_LABEL_BY_ID`
993
- - `STEP_PRECONDITION_NAMES`
994
- - `ISSUE_DEFINITION_CODEX_HANDOFF`
995
- - `ISSUE_FILE_CODEX_HANDOFF`
996
- - `PLAN_CODEX_HANDOFF`
997
- - `PLAN_EXECUTION_CODEX_HANDOFF`
998
- - `REVIEW_EXECUTION_CODEX_HANDOFF`
999
- - `RESOLVE_DESLOP_CODEX_HANDOFF`
1000
- - `DEEP_UI_CHECK_CODEX_HANDOFF`
1001
- - `AUTOMATED_CHECK_REPAIR_CODEX_HANDOFF`
1002
- - `BLUEPRINT_CODEX_HANDOFF`
1003
- - `PR_FILE_CODEX_HANDOFF`
1004
- - `PR_MERGE_PREP_CODEX_HANDOFF`
1005
- - `JSKIT_CLI_SHELL_COMMAND`
1006
- - `SESSION_STATE_RELATIVE_PATH`
1007
- Local functions
1008
- - `codexHandoff({ promptActionLabel = "", promptIntroText = "", promptWaitingText = "", sendPrompt = false } = {})`
1009
- - `stepAutomationFor({ codex = undefined, id, kind, requiresExplicitRun = false })`
1010
- - `defineStep({ buttonLabel, codex = undefined, description, id, input = INPUT_NONE, kind = "automatic", label, nextCommandTemplate = DEFAULT_NEXT_COMMAND_TEMPLATE, preconditions = [], requiresExplicitRun = false, submitOptions = {}, automation = undefined, utilityActions = [], displayGroupId = "", displayGroupLabel = "" })`
1011
-
1012
- ### `src/server/sessionRuntime/io.js`
1013
- Exports
1014
- - `fileExists(filePath)`
1015
- - `normalizeText(value)`
1016
- - `readTextIfExists(filePath)`
1017
- - `readTrimmedFile(filePath)`
1018
- - `runCommand(command, args = [], { cwd, env = {}, timeout = 30000 } = {})`
1019
- - `runGit(targetRoot, args = [], options = {})`
1020
- - `runGitInWorktree(worktree, args = [], options = {})`
1021
- - `timestampForStepRecord(now = new Date())`
1022
- - `writeTextFile(filePath, value)`
1023
-
1024
- ### `src/server/sessionRuntime/paths.js`
1025
- Exports
1026
- - `archiveSession(paths, archive)`
1027
- - `createAvailableSessionId(targetRoot, now = new Date())`
1028
- - `createSessionId(now = new Date())`
1029
- - `isValidSessionId(sessionId = "")`
1030
- - `normalizeSessionId(sessionId = "")`
1031
- - `resolveExistingSessionRoot(paths)`
1032
- - `resolveSessionPaths({ targetRoot, sessionId = "" } = {})`
1033
- - `pathsForExistingSession(paths)`
1034
- Local functions
1035
- - `formatDatePart(value)`
1036
-
1037
- ### `src/server/sessionRuntime/preconditions.js`
1038
- Exports
1039
- - `applyPreconditions(paths, checks = [])`
1040
- - `assertAcceptedChangesCommitted(paths)`
1041
- - `assertActiveCycleExists(paths)`
1042
- - `assertActiveCycleUserCheckPassed(paths)`
1043
- - `assertUserCheckPassed(paths)`
1044
- - `assertBlueprintUpdateSatisfied(paths)`
1045
- - `assertDeepUiCheckSatisfied(paths)`
1046
- - `assertDependenciesInstalled(paths)`
1047
- - `assertPullRequestFileExists(paths)`
1048
- - `assertGhAuth(targetRoot)`
1049
- - `assertGitCurrentBranch(targetRoot)`
1050
- - `assertGitRepository(targetRoot)`
1051
- - `assertGithubOrigin(targetRoot)`
1052
- - `assertIssueTextExists(paths)`
1053
- - `assertIssueUrlExists(paths)`
1054
- - `assertAutomatedChecksPassed(paths)`
1055
- - `assertMainCheckoutSyncSatisfied(paths)`
1056
- - `assertPrUrlExists(paths)`
1057
- - `assertReadyJskitApp(paths)`
1058
- - `assertSessionExists(paths)`
1059
- - `assertTargetRootWritable(targetRoot)`
1060
- - `assertWorktreeExists(paths)`
1061
- - `ensureStudioGitExclude(targetRoot)`
1062
- - `hasWorktree`
1063
- Local functions
1064
- - `jskitCommand(args = "")`
1065
- - `resolveGitCommonDirectory(targetRoot)`
1066
- - `pathExists(filePath)`
1067
- - `assertActiveCycleStepRecord(paths, { code, id, message, stepId })`
1068
-
1069
- ### `src/server/sessionRuntime/promptRenderer.js`
1070
- Exports
1071
- - `readPromptTemplate(targetRoot, name)`
1072
- - `renderPrompt(paths, templateName, values = {})`
1073
- - `renderTemplate(source, values = {})`
1074
-
1075
- ### `src/server/sessionRuntime/responses.js`
1076
- Exports
1077
- - `buildSessionErrorResponse({ targetRoot = process.cwd(), sessionId = "", code, message, repairCommand = "", status = SESSION_STATUS.BLOCKED, preconditions = [], errors = undefined } = {})`
1078
- - `buildSessionResponse(paths, { codex = undefined, ok = true, errors = [], preconditions = [], prompt = undefined, status = undefined, warnings = [] } = {})`
1079
- - `buildStepDefinitions()`
1080
- - `createError({ code, message, repairCommand = "" })`
1081
- - `createPrecondition({ id, ok, message })`
1082
- - `failSession(paths, { code, message, repairCommand = "", preconditions = [], status = SESSION_STATUS.BLOCKED, prompt = "", codex = undefined })`
1083
- - `markCurrentStep(paths, stepId)`
1084
- - `markStatus(paths, status)`
1085
- - `normalizeReviewPassNumber(value = "")`
1086
- - `readActiveCycle(paths)`
1087
- - `readStepRecords(paths)`
1088
- - `readReviewPasses(paths)`
1089
- - `readSessionArtifacts(paths)`
1090
- - `reviewPassDirectoryName(pass = DEFAULT_REVIEW_PASS)`
1091
- - `reviewPassRoot(paths, pass)`
1092
- - `writeCycleStepRecord(paths, recordName, message, { cycle = "" } = {})`
1093
- - `writeStepRecord(paths, stepId, message)`
1094
- Local functions
1095
- - `createWarning({ code, message, repairCommand = "" })`
1096
- - `issueNumberFromUrl(issueUrl = "")`
1097
- - `normalizeStepId(stepId)`
1098
- - `stepIndex(stepId)`
1099
- - `normalizeKnownStepIds(stepIds = [])`
1100
- - `stepCanExposeStoredPrompt(stepId)`
1101
- - `normalizeCycleNumber(value = "")`
1102
- - `cycleDirectoryName(cycle = DEFAULT_ACTIVE_CYCLE)`
1103
- - `isCycleStepId(stepId = "")`
1104
- - `readWorkflowVersion(paths)`
1105
- - `cycleStepsRoot(paths, cycle)`
1106
- - `cycleRoot(paths, cycle)`
1107
- - `parseJsonFileIfExists(filePath)`
1108
- - `readReviewPassNumbers(paths)`
1109
- - `readReviewPassInfo(paths, pass)`
1110
- - `latestReviewPass(artifacts = {})`
1111
- - `latestReviewPassIsPrompted(artifacts = {})`
1112
- - `readPromptFromAbsolutePath(filePath = "")`
1113
- - `readReviewPromptForStep(paths, artifacts = {})`
1114
- - `readPromptForStep(paths, stepId, artifacts = {})`
1115
- - `readStepFileNames(stepsRoot)`
1116
- - `readCompletedSteps(paths)`
1117
- - `applyReviewPassCompletionOverlay(paths, completedSteps = [])`
1118
- - `readCycleInfo(paths, cycle)`
1119
- - `readCycles(paths, activeCycle)`
1120
- - `readStructuredChecks(paths)`
1121
- - `readStructuredUiChecks(paths)`
1122
- - `readWorktreeStatus(paths, worktreeReady)`
1123
- - `resolveNextStep(completedSteps = [])`
1124
- - `cloneContractValue(value)`
1125
- - `normalizeWarning(warning)`
1126
- - `mergeWarnings(...warningLists)`
1127
- - `publicCodexContract(codex = null)`
1128
- - `stepRepeatabilityContract(stepId)`
1129
- - `publicStepDefinition(step, index)`
1130
- - `stepIsRetryableWhenBlocked(stepId)`
1131
- - `uiCheckPromptedForStep(artifacts = {}, stepId = "")`
1132
- - `skipReasonForStep(stepId, artifacts = {})`
1133
- - `buildCurrentStepAction(stepId, artifacts = {})`
1134
- - `rawCodexHandoff(stepId, artifacts = {})`
1135
- - `buildCodexHandoff(stepId, artifacts = {})`
1136
- - `stepCanExposeNextCommand(stepId, artifacts = {})`
1137
- - `buildNextCommand(sessionId, stepId, artifacts = {})`
1138
- - `buildStepActionCommands(sessionId, stepId, artifacts = {})`
1139
-
1140
- ### `src/server/sessionRuntime/worktrees.js`
1141
- Exports
1142
- - `hasWorktree(paths = {})`
1143
- - `parseGitWorktreeList(output = "")`
1144
-
1145
813
  ### `src/server/shared/cliError.js`
1146
814
  Exports
1147
815
  - `createCliError(message, { showUsage = false, exitCode = 1, renderUsage = null } = {})`
@@ -15,7 +15,7 @@ Preferred execution mode:
15
15
 
16
16
  ## Read First
17
17
 
18
- Use the current `jskit session` review prompt as the source of truth when the review is part of a session.
18
+ Use the user request, current diff, and app-local instructions as the source of truth for the review scope.
19
19
 
20
20
  Read these on demand:
21
21
 
@@ -24,11 +24,6 @@ Read these on demand:
24
24
  - `../../guide/agent/index.md`
25
25
  - `../../site/guide/index.md` when compressed guidance is ambiguous
26
26
 
27
- Inspect app-local session files when they exist:
28
-
29
- - `.jskit/sessions/active/<session_id>/prompt.md`
30
- - `.jskit/sessions/active/<session_id>/issue.md`
31
-
32
27
  ## Review target
33
28
 
34
29
  Determine whether the target is:
@@ -36,8 +31,6 @@ Determine whether the target is:
36
31
  - the current chunk
37
32
  - or the whole changeset
38
33
 
39
- Use the active `jskit session` state to determine the current pass when available.
40
-
41
34
  ## Required passes
42
35
 
43
36
  1. Deslop review
@@ -1,13 +1,10 @@
1
1
  # App Agent Instructions
2
2
 
3
- Use JSKIT sessions for issue work.
3
+ Use the JSKIT agent docs and the local app scaffold as the source of truth for app work.
4
4
 
5
- Use:
5
+ Recommended references:
6
6
 
7
- - `jskit session`
8
- - `jskit session create`
9
- - `jskit session <session_id>`
10
- - `jskit session <session_id> step`
11
- - `jskit session <session_id> step --json` for tools and UIs
7
+ - `node_modules/@jskit-ai/agent-docs/guide/agent/index.md`
8
+ - `node_modules/@jskit-ai/agent-docs/patterns/INDEX.md`
12
9
 
13
- Follow the current session step output and prompt. Do not invent a parallel manual issue workflow.
10
+ Keep changes scoped to the user request and verify runtime behavior with tests or explicit checks.