@jskit-ai/agent-docs 0.1.33 → 0.1.35
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.
|
@@ -30,6 +30,19 @@ npm install
|
|
|
30
30
|
|
|
31
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
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.
|
|
45
|
+
|
|
33
46
|
After creating the real app scaffolding (the base shell, not the seed wrapper), you will need to run `npm install` to install dependencies.
|
|
34
47
|
|
|
35
48
|
If you already know you want a small non-workspace baseline right after the scaffold, this is the shortest reproducible path:
|
package/package.json
CHANGED
|
@@ -453,6 +453,14 @@ Local functions
|
|
|
453
453
|
Exports
|
|
454
454
|
- `createHealthCommands(ctx = {})`
|
|
455
455
|
|
|
456
|
+
### `src/server/commandHandlers/helperMap.js`
|
|
457
|
+
Exports
|
|
458
|
+
- `createHelperMapCommands(ctx = {})`
|
|
459
|
+
Local functions
|
|
460
|
+
- `writeJson(stdout, payload)`
|
|
461
|
+
- `writeErrors(stdout, payload)`
|
|
462
|
+
- `writeHelperMapText(stdout, payload)`
|
|
463
|
+
|
|
456
464
|
### `src/server/commandHandlers/list.js`
|
|
457
465
|
Exports
|
|
458
466
|
- `createListCommands(ctx = {})`
|
|
@@ -765,6 +773,36 @@ Local functions
|
|
|
765
773
|
- `printTopLevelHelp(stream = process.stderr)`
|
|
766
774
|
- `printCommandHelp(stream = process.stderr, command = "")`
|
|
767
775
|
|
|
776
|
+
### `src/server/helperMap.js`
|
|
777
|
+
Exports
|
|
778
|
+
- `HELPER_MAP_JSON_RELATIVE_PATH`
|
|
779
|
+
- `HELPER_MAP_MARKDOWN_RELATIVE_PATH`
|
|
780
|
+
- `buildHelperMap({ targetRoot })`
|
|
781
|
+
- `readHelperMap({ targetRoot })`
|
|
782
|
+
- `updateHelperMap({ targetRoot })`
|
|
783
|
+
Local functions
|
|
784
|
+
- `pathExists(filePath)`
|
|
785
|
+
- `readJsonFile(filePath)`
|
|
786
|
+
- `normalizePackageDependencies(packageJson = {})`
|
|
787
|
+
- `classifySymbol(name = "")`
|
|
788
|
+
- `createExportAnalysisProject()`
|
|
789
|
+
- `kindFromDeclaration(declaration, exportName = "")`
|
|
790
|
+
- `addSymbol(symbols, symbol)`
|
|
791
|
+
- `extractExportedSymbols(sourceFile)`
|
|
792
|
+
- `extractVueScriptSource(source = "", filePath = "")`
|
|
793
|
+
- `addCodeFileToProject(project, file)`
|
|
794
|
+
- `walkCodeFiles(rootPath, relativeRoot = "")`
|
|
795
|
+
- `collectAppExports(targetRoot)`
|
|
796
|
+
- `flattenPackageExports(exportsField)`
|
|
797
|
+
- `collectJskitPackageExports(targetRoot, packageJson = {})`
|
|
798
|
+
- `renderExportList(symbols = [])`
|
|
799
|
+
- `renderHelperMapMarkdown(map)`
|
|
800
|
+
|
|
801
|
+
### `src/server/helperMapPaths.js`
|
|
802
|
+
Exports
|
|
803
|
+
- `HELPER_MAP_JSON_RELATIVE_PATH`
|
|
804
|
+
- `HELPER_MAP_MARKDOWN_RELATIVE_PATH`
|
|
805
|
+
|
|
768
806
|
### `src/server/index.js`
|
|
769
807
|
Exports
|
|
770
808
|
- `runCli`
|
|
@@ -776,6 +814,7 @@ Exports
|
|
|
776
814
|
- `STEP_IDS`
|
|
777
815
|
- `STEP_PRECONDITION_NAMES`
|
|
778
816
|
- `abandonSession({ targetRoot = process.cwd(), sessionId } = {})`
|
|
817
|
+
- `adoptDependenciesInstalled({ targetRoot = process.cwd(), sessionId, message = "" } = {})`
|
|
779
818
|
- `adoptCodexThreadId({ targetRoot = process.cwd(), sessionId, codexThreadId } = {})`
|
|
780
819
|
- `buildSessionResponse`
|
|
781
820
|
- `buildSessionErrorResponse`
|
|
@@ -783,6 +822,7 @@ Exports
|
|
|
783
822
|
- `createSessionId`
|
|
784
823
|
- `extractIssueTitle(value = "")`
|
|
785
824
|
- `extractIssueText(value = "")`
|
|
825
|
+
- `extractPlanDetails(value = "")`
|
|
786
826
|
- `extractPlanText(value = "")`
|
|
787
827
|
- `inspectSession({ targetRoot = process.cwd(), sessionId } = {})`
|
|
788
828
|
- `inspectSessionDiff({ targetRoot = process.cwd(), sessionId } = {})`
|
|
@@ -790,6 +830,7 @@ Exports
|
|
|
790
830
|
- `isValidSessionId`
|
|
791
831
|
- `listSessions({ targetRoot = process.cwd(), archive = "active" } = {})`
|
|
792
832
|
- `renderTemplate`
|
|
833
|
+
- `recordDependenciesInstalled(paths, { message = "Installed Node dependencies in the session worktree.", preconditions = [] } = {})`
|
|
793
834
|
- `resolveSessionPaths`
|
|
794
835
|
- `runSessionStep({ targetRoot = process.cwd(), sessionId, options = {} } = {})`
|
|
795
836
|
Local functions
|
|
@@ -798,15 +839,43 @@ Local functions
|
|
|
798
839
|
- `existingSessionContext({ targetRoot = process.cwd(), sessionId } = {})`
|
|
799
840
|
- `withExistingSession(input, handler)`
|
|
800
841
|
- `extractMarkedText(value = "", marker = "")`
|
|
842
|
+
- `extractIssueCategory(value = "")`
|
|
843
|
+
- `extractUiImpact(value = "")`
|
|
844
|
+
- `extractAgentDecisions(value = "")`
|
|
845
|
+
- `normalizeIssueCategory(value = "")`
|
|
846
|
+
- `normalizeUiImpact(value = "")`
|
|
847
|
+
- `writePromptArtifact(paths, fileName, prompt)`
|
|
848
|
+
- `commandText(command, args = [])`
|
|
849
|
+
- `commandOutputSummary(output = "")`
|
|
850
|
+
- `appendCommandLog(paths, { args = [], command, cwd = "", kind = "command", result } = {})`
|
|
851
|
+
- `runLoggedCommand(paths, kind, command, args = [], options = {})`
|
|
852
|
+
- `readIssueMetadata(paths)`
|
|
853
|
+
- `writeIssueMetadata(paths, metadata = {})`
|
|
854
|
+
- `readGithubComments(paths)`
|
|
855
|
+
- `writeGithubComments(paths, comments = {})`
|
|
856
|
+
- `commentOnIssueOnce(paths, { bodyFile, issueUrl, purpose })`
|
|
857
|
+
- `appendAgentDecisions(paths, decisions = "")`
|
|
858
|
+
- `appendAgentDecisionsInput(paths, options = {})`
|
|
859
|
+
- `recordIssueInAgentDecisions(paths, issueUrl = "")`
|
|
860
|
+
- `issueMetadataFromUrl(issueUrl = "")`
|
|
861
|
+
- `nextCycleNumber(cycle = "001")`
|
|
801
862
|
- `normalizeArchiveFilter(archive = "active")`
|
|
802
863
|
- `emptySessionDetails(response)`
|
|
803
864
|
- `removeEmptyStaleWorktreeDirectory(paths)`
|
|
804
865
|
- `createWorktree(paths, _options = {}, context = {})`
|
|
866
|
+
- `parsePackageManager(value = "")`
|
|
867
|
+
- `hasWorktreeFile(worktree, fileName)`
|
|
868
|
+
- `dependencyInstallCommandForWorktree(worktree)`
|
|
869
|
+
- `installDependencies(paths, _options = {}, context = {})`
|
|
805
870
|
- `renderIssuePrompt(paths, options = {})`
|
|
806
871
|
- `draftIssue(paths, options = {})`
|
|
807
872
|
- `titleFromIssue(issueText)`
|
|
808
873
|
- `createIssue(paths, _options = {}, context = {})`
|
|
874
|
+
- `renderPlanDetailsPrompt(paths, _options = {}, context = {})`
|
|
875
|
+
- `savePlanDetails(paths, options = {}, context = {})`
|
|
809
876
|
- `makePlan(paths, options = {}, context = {})`
|
|
877
|
+
- `renderPlanExecutionPrompt(paths, _options = {}, context = {})`
|
|
878
|
+
- `renderPlanFineTuningPrompt(paths, _options = {}, context = {})`
|
|
810
879
|
- `worktreeStatus(worktree)`
|
|
811
880
|
- `untrackedFiles(worktree)`
|
|
812
881
|
- `untrackedFileDiff(worktree, filePath)`
|
|
@@ -815,32 +884,87 @@ Local functions
|
|
|
815
884
|
- `commitWorktree(paths, { message, allowNoChanges = false } = {})`
|
|
816
885
|
- `commitImplementation(paths)`
|
|
817
886
|
- `changedFilesFromLastCommit(paths)`
|
|
887
|
+
- `changedFilesSinceBase(paths)`
|
|
888
|
+
- `nextReviewPassNumber(pass = "")`
|
|
889
|
+
- `readCurrentReviewPass(paths)`
|
|
890
|
+
- `writeCurrentReviewPass(paths, pass)`
|
|
891
|
+
- `resolveReviewPassForPrompt(paths)`
|
|
892
|
+
- `writeReviewPassJson(paths, pass, fileName, payload)`
|
|
893
|
+
- `currentHead(paths)`
|
|
818
894
|
- `renderReviewPrompt(paths)`
|
|
819
|
-
- `
|
|
895
|
+
- `acceptReviewChanges(paths, options = {})`
|
|
896
|
+
- `commitReviewChanges(paths)`
|
|
897
|
+
- `runAutomatedChecks(paths, { stepId, label })`
|
|
898
|
+
- `readCheckResult(paths, stepId)`
|
|
899
|
+
- `maybeCommitCheckRepair(paths, { label, stepId })`
|
|
900
|
+
- `uiCheckAcceptStepId(stepId)`
|
|
901
|
+
- `uiCheckCommitStepId(stepId)`
|
|
902
|
+
- `uiCheckSourceStepId(stepId)`
|
|
903
|
+
- `uiCheckLabelForStep(stepId)`
|
|
904
|
+
- `writeUiCheckJson(paths, fileName, payload)`
|
|
905
|
+
- `runDeepUiCheck(paths, { stepId, label, phase }, options = {}, context = {})`
|
|
906
|
+
- `acceptUiCheckChanges(paths, { stepId }, _options = {}, context = {})`
|
|
907
|
+
- `commitUiCheckChanges(paths, { stepId }, _options = {}, context = {})`
|
|
820
908
|
- `userCheck(paths, options = {})`
|
|
909
|
+
- `updateBlueprint(paths, options = {}, context = {})`
|
|
821
910
|
- `readPackageJson(root)`
|
|
822
911
|
- `doctorCommandForWorktree(worktree)`
|
|
823
912
|
- `runDoctor(paths)`
|
|
913
|
+
- `maybeCommitDoctorRepair(paths)`
|
|
914
|
+
- `commitLinesSinceBase(paths)`
|
|
915
|
+
- `readCheckSummaries(paths)`
|
|
916
|
+
- `readUiCheckSummaries(paths)`
|
|
917
|
+
- `readReviewPassSummaries(paths)`
|
|
918
|
+
- `createFinalReport(paths, _options = {}, context = {})`
|
|
824
919
|
- `issueNumberFromUrl(issueUrl)`
|
|
920
|
+
- `parseJsonObject(value)`
|
|
921
|
+
- `readPrState(paths, prUrl)`
|
|
922
|
+
- `readCurrentBranchPrState(paths)`
|
|
923
|
+
- `prStateIsMerged(prState)`
|
|
924
|
+
- `prStateIsClosed(prState)`
|
|
925
|
+
- `currentTargetBranch(targetRoot)`
|
|
926
|
+
- `assertTargetRootCleanForBaseUpdate(paths)`
|
|
927
|
+
- `removeSessionWorktree(paths)`
|
|
928
|
+
- `writePrOutcome(paths, outcome)`
|
|
929
|
+
- `assertTargetRootCanUpdateBase(paths, branch)`
|
|
930
|
+
- `assertTargetBaseCanFastForward(paths, branch)`
|
|
931
|
+
- `updateLocalBaseBranch(paths, baseBranch = "")`
|
|
932
|
+
- `updateHelperMapBeforePr(paths)`
|
|
825
933
|
- `createPr(paths)`
|
|
826
|
-
- `
|
|
934
|
+
- `closePrWithoutMerge(paths, prUrl, options = {})`
|
|
935
|
+
- `finalizePr(paths, options = {})`
|
|
827
936
|
- `finishSession(paths)`
|
|
828
937
|
- `runNamedPreconditions(paths, names = [])`
|
|
829
938
|
|
|
939
|
+
### `src/server/sessionRuntime/appReadiness.js`
|
|
940
|
+
Exports
|
|
941
|
+
- `inspectReadyJskitAppRoot(rootPath)`
|
|
942
|
+
Local functions
|
|
943
|
+
- `pathExists(filePath)`
|
|
944
|
+
- `directoryExists(filePath)`
|
|
945
|
+
|
|
830
946
|
### `src/server/sessionRuntime/constants.js`
|
|
831
947
|
Exports
|
|
832
948
|
- `PROMPT_DIRECTORY`
|
|
833
949
|
- `SESSION_ID_PATTERN`
|
|
834
950
|
- `SESSION_STATUS`
|
|
951
|
+
- `SESSION_WORKFLOW_VERSION`
|
|
952
|
+
- `REVIEW_PASS_LIMIT`
|
|
953
|
+
- `CYCLE_STEP_IDS`
|
|
835
954
|
- `STEP_DEFINITION_BY_ID`
|
|
836
955
|
- `STEP_DEFINITIONS`
|
|
837
956
|
- `STEP_IDS`
|
|
838
957
|
- `STEP_LABEL_BY_ID`
|
|
839
958
|
- `STEP_PRECONDITION_NAMES`
|
|
959
|
+
- `PLAN_EXECUTION_CODEX_HANDOFF`
|
|
960
|
+
- `PLAN_FINE_TUNING_CODEX_HANDOFF`
|
|
961
|
+
- `REVIEW_EXECUTION_CODEX_HANDOFF`
|
|
962
|
+
- `DEEP_UI_CHECK_CODEX_HANDOFF`
|
|
963
|
+
- `BLUEPRINT_CODEX_HANDOFF`
|
|
840
964
|
- `SESSION_STATE_RELATIVE_PATH`
|
|
841
965
|
Local functions
|
|
842
|
-
- `codexHandoff(expectedOutput)`
|
|
843
|
-
- `defineStep({ buttonLabel, codex = undefined, description, id, input = INPUT_NONE, kind = "automatic", label, nextCommandTemplate = "jskit session {{session_id}} step", preconditions = [], utilityActions = [] })`
|
|
966
|
+
- `codexHandoff(expectedOutput, { autoInject = false, promptActionLabel = "" } = {})`
|
|
967
|
+
- `defineStep({ buttonLabel, codex = undefined, description, id, input = INPUT_NONE, kind = "automatic", label, nextCommandTemplate = "jskit session {{session_id}} step", preconditions = [], utilityActions = [], displayGroupId = "", displayGroupLabel = "" })`
|
|
844
968
|
|
|
845
969
|
### `src/server/sessionRuntime/io.js`
|
|
846
970
|
Exports
|
|
@@ -870,13 +994,26 @@ Local functions
|
|
|
870
994
|
### `src/server/sessionRuntime/preconditions.js`
|
|
871
995
|
Exports
|
|
872
996
|
- `applyPreconditions(paths, checks = [])`
|
|
997
|
+
- `assertActiveCycleExists(paths)`
|
|
998
|
+
- `assertActiveCycleUserCheckPassed(paths)`
|
|
999
|
+
- `assertBlueprintUpdateSatisfied(paths)`
|
|
1000
|
+
- `assertDeepUiCheckSatisfied(paths)`
|
|
1001
|
+
- `assertDeepUiRecheckSatisfied(paths)`
|
|
1002
|
+
- `assertDependenciesInstalled(paths)`
|
|
1003
|
+
- `assertFinalReportExists(paths)`
|
|
873
1004
|
- `assertGhAuth(targetRoot)`
|
|
874
1005
|
- `assertGitCurrentBranch(targetRoot)`
|
|
875
1006
|
- `assertGitRepository(targetRoot)`
|
|
876
1007
|
- `assertGithubOrigin(targetRoot)`
|
|
1008
|
+
- `assertIssueMetadataExists(paths)`
|
|
877
1009
|
- `assertIssueTextExists(paths)`
|
|
878
1010
|
- `assertIssueUrlExists(paths)`
|
|
1011
|
+
- `assertPostReviewChecksPassed(paths)`
|
|
1012
|
+
- `assertPreReviewChecksPassed(paths)`
|
|
1013
|
+
- `assertPlanDetailsExists(paths)`
|
|
1014
|
+
- `assertPlanTextExists(paths)`
|
|
879
1015
|
- `assertPrUrlExists(paths)`
|
|
1016
|
+
- `assertReadyJskitApp(paths)`
|
|
880
1017
|
- `assertSessionExists(paths)`
|
|
881
1018
|
- `assertTargetRootWritable(targetRoot)`
|
|
882
1019
|
- `assertWorktreeExists(paths)`
|
|
@@ -884,6 +1021,8 @@ Exports
|
|
|
884
1021
|
- `hasWorktree`
|
|
885
1022
|
Local functions
|
|
886
1023
|
- `resolveGitCommonDirectory(targetRoot)`
|
|
1024
|
+
- `pathExists(filePath)`
|
|
1025
|
+
- `assertActiveCycleStepReceipt(paths, { code, id, message, stepId })`
|
|
887
1026
|
|
|
888
1027
|
### `src/server/sessionRuntime/promptRenderer.js`
|
|
889
1028
|
Exports
|
|
@@ -894,26 +1033,53 @@ Exports
|
|
|
894
1033
|
### `src/server/sessionRuntime/responses.js`
|
|
895
1034
|
Exports
|
|
896
1035
|
- `buildSessionErrorResponse({ targetRoot = process.cwd(), sessionId = "", code, message, repairCommand = "", status = SESSION_STATUS.BLOCKED, preconditions = [], errors = undefined } = {})`
|
|
897
|
-
- `buildSessionResponse(paths, { ok = true, errors = [], preconditions = [], prompt = undefined, status = undefined } = {})`
|
|
1036
|
+
- `buildSessionResponse(paths, { codex = undefined, ok = true, errors = [], preconditions = [], prompt = undefined, status = undefined } = {})`
|
|
898
1037
|
- `buildStepDefinitions()`
|
|
899
1038
|
- `createError({ code, message, repairCommand = "" })`
|
|
900
1039
|
- `createPrecondition({ id, ok, message })`
|
|
901
1040
|
- `failSession(paths, { code, message, repairCommand = "", preconditions = [], status = SESSION_STATUS.BLOCKED, prompt = "" })`
|
|
902
1041
|
- `markCurrentStep(paths, stepId)`
|
|
903
1042
|
- `markStatus(paths, status)`
|
|
1043
|
+
- `normalizeReviewPassNumber(value = "")`
|
|
1044
|
+
- `readActiveCycle(paths)`
|
|
904
1045
|
- `readReceiptSteps(paths)`
|
|
1046
|
+
- `readReviewPasses(paths)`
|
|
905
1047
|
- `readSessionArtifacts(paths)`
|
|
1048
|
+
- `reviewPassDirectoryName(pass = DEFAULT_REVIEW_PASS)`
|
|
1049
|
+
- `reviewPassRoot(paths, pass)`
|
|
1050
|
+
- `writeActiveCycle(paths, cycle)`
|
|
1051
|
+
- `writeCycleReceipt(paths, receiptName, message, { cycle = "" } = {})`
|
|
906
1052
|
- `writeReceipt(paths, stepId, message)`
|
|
907
1053
|
Local functions
|
|
908
1054
|
- `normalizeStepId(stepId)`
|
|
909
1055
|
- `stepIndex(stepId)`
|
|
910
1056
|
- `normalizeKnownStepIds(stepIds = [])`
|
|
911
1057
|
- `stepCanExposeStoredPrompt(stepId)`
|
|
912
|
-
- `
|
|
1058
|
+
- `normalizeCycleNumber(value = "")`
|
|
1059
|
+
- `cycleDirectoryName(cycle = DEFAULT_ACTIVE_CYCLE)`
|
|
1060
|
+
- `isCycleStepId(stepId = "")`
|
|
1061
|
+
- `readWorkflowVersion(paths)`
|
|
1062
|
+
- `cycleStepsRoot(paths, cycle)`
|
|
1063
|
+
- `cycleRoot(paths, cycle)`
|
|
1064
|
+
- `parseJsonFileIfExists(filePath)`
|
|
1065
|
+
- `readReviewPassNumbers(paths)`
|
|
1066
|
+
- `readReviewPassInfo(paths, pass)`
|
|
1067
|
+
- `readPromptForStep(paths, stepId)`
|
|
1068
|
+
- `readStepFileNames(stepsRoot)`
|
|
1069
|
+
- `readCompletedSteps(paths)`
|
|
1070
|
+
- `applyReviewPassCompletionOverlay(paths, completedSteps = [])`
|
|
1071
|
+
- `readCycleInfo(paths, cycle)`
|
|
1072
|
+
- `readCycles(paths, activeCycle)`
|
|
1073
|
+
- `readStructuredChecks(paths)`
|
|
1074
|
+
- `readStructuredUiChecks(paths)`
|
|
1075
|
+
- `readWorktreeStatus(paths, worktreeReady)`
|
|
913
1076
|
- `resolveNextStep(completedSteps = [])`
|
|
914
1077
|
- `cloneContractValue(value)`
|
|
915
1078
|
- `publicStepDefinition(step, index)`
|
|
916
|
-
- `
|
|
1079
|
+
- `stepIsRetryableWhenBlocked(stepId)`
|
|
1080
|
+
- `stepIsConditional(stepId)`
|
|
1081
|
+
- `skipReasonForStep(stepId, artifacts = {})`
|
|
1082
|
+
- `buildCurrentStepAction(stepId, artifacts = {})`
|
|
917
1083
|
- `buildCodexHandoff(stepId)`
|
|
918
1084
|
- `buildNextCommand(sessionId, stepId)`
|
|
919
1085
|
|