Repository navigation
Go Logger Enhancement #399
go-logger.lock.yml
on: schedule
Annotations
9 errors, 9 warnings, and 3 notices
|
agent
thin GitHub remote-fetch wrappers (download
|
|
agent
thin GitHub remote-fetch wrappers and repo-spec\n// parsing utilities.\n\npackage cli\n\nimport (\n\t\"errors\"\n\t\"path\"\n\t\"path/filepath\"\n\n\t\"github.com/github/gh-aw/pkg/constants\"\n\t\"github.com/github/gh-aw/pkg/logger\"\n)\n\nvar (\n\terrRepositoryPackageFileNotFound = errors.New(\"repository package file not found\")\n\terrRepositoryPackageManifestNotFound = errors.New(\"repository package manifest not found\")\n)\n\nvar downloadPackageFileFromGitHubForHost = downloadRepositoryPackageFileFromGitHubForHost\nvar listPackageWorkflowFilesForHost = listRepositoryPackageWorkflowFilesForHost\nvar listPackageDirFilesForHost = listRepositoryPackageDirFilesForHost\nvar listPackageDirFilesRecursivelyForHost = listRepositoryPackageDirFilesRecursivelyForHost\nvar listPackageDirSubdirsForHost = listRepositoryPackageDirSubdirsForHost\nvar getRepositoryPackageDefaultBranch = resolveRepositoryPackageDefaultBranch\nvar getRepositoryPackageLatestRelease = resolveRepositoryPackageLatestRelease\nvar addPackageManifestLog = logger.New(\"cli:add_package_manifest\")\n\nvar packageSourceDirectories = []string{\"workflows\", constants.WorkflowsDir}\n\nconst repositoryPackageManifestFileName = \"aw.yml\"\nconst repositoryPackageManifestVersion = \"1\"\nconst ghAwRepositorySlug = \"github/gh-aw\"\nconst packageSkillsDirectory = \"skills\"\nconst packageAgentsDirectory = \"agents\"\nconst packageSkillMarkerFile = \"SKILL.md\"\n\ntype resolvedRepositoryPackage struct {\n\tManifestPath string\n\tResolvedRef string\n\tName string\n\tEmoji string\n\tIcon string\n\tDescription string\n\tLicense string\n\tPrivate bool\n\tExperimental bool\n\tDocsPath string\n\tInstallationSource []resolvedPackageInstallable\n\tResourceFiles []resolvedPackageResource\n\tProjectFile *resolvedPackageResource\n\tBootstrap *repositoryPackageBootstrap\n\tSkillFiles []resolvedPackageSkillFile\n\tAgentFiles []string\n\tWarnings []string\n}\n\n// resolvedPackageInstallable pairs the location a workflow file is read from with the\n// path it is installed to in the consuming repository.\ntype resolvedPackageInstallable struct {\n\t// SourcePath is where the file is fetched from. For remote packages it is a\n\t// repository-relative path (e.g. \"factory/payload/workflows/reviewer.md\"); for local\n\t// packages it is an absolute filesystem path.\n\tSourcePath string\n\t// DestinationPath is the repository-root-relative install path in the consuming\n\t// repository (e.g. \".github/workflows/reviewer.md\").\n\tDestinationPath string\n}\n\ntype resolvedPackageResource struct {\n\tSourcePath string\n\tDestinationPath string\n}\n\n// packageInstallableSourcePaths returns the source paths of the given installables.\nfunc packageInstallableSourcePaths(installables []resolvedPackageInstallable) []string {\n\tpaths := make([]string, 0, len(installables))\n\tfor _, installable := range installables {\n\t\tpaths = append(paths, installable.SourcePath)\n\t}\n\treturn paths\n}\n\n// defaultPackageInstallDestination returns the repository-root-relative install path used\n// for entries that do not declare an explicit destination.\nfunc defaultPackageInstallDestination(sourcePath string) string {\n\treturn constants.WorkflowsDirSlash + path.Base(filepath.ToSlash(sourcePath))\n}\n\n// packageInstallablesFromSourcePaths converts plain source paths into installables using\n// the default destination for each entry.\nfunc packageInstallablesFromSourcePaths(sourcePaths []string) []resolvedPackageInstallable {\n\tinstallables := make([]resolvedPackageInstallable, 0, len(sourcePaths))\n\tfor _, sourcePath := range sourcePaths {\n\t\tinstallables = append(installables, resolvedPackageInstallable{\n\t\t\tSourcePath: sourcePath,\n\t\t\tDestinationPath: defaultPackageInstallDestination(sourcePath),\n\t\t})\n\t}\n\treturn installables\n}\n\n// resolvedPackageSkillFile represents a single file within a skill directory that\n// should
|
|
agent
thin GitHub remote-fetch wrappers (download\n// file/list dir/branch/release lookups) and repo-spec parsing utilities.\n\npackage cli\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/github/gh-aw/pkg/errorutil\"\n\t\"github.com/github/gh-aw/pkg/parser\"\n\t\"github.com/github/gh-aw/pkg/workflow\"\n)\n\nfunc parseRepositoryPackageSpec(spec string) (*RepoSpec, bool, error) {\n\tif strings.HasPrefix(spec, \"http://\") || strings.HasPrefix(spec, \"https://\") || isLocalWorkflowPath(spec) {\n\t\treturn nil, false, nil\n\t}\n\n\tparts := strings.SplitN(spec, \"@\", 2)\n\tspecWithoutVersion := parts[0]\n\tif strings.HasSuffix(strings.ToLower(specWithoutVersion), \".md\") {\n\t\treturn nil, false, nil\n\t}\n\n\tslashParts := strings.Split(specWithoutVersion, \"/\")\n\tif len(slashParts) < 2 || slashParts[0] == \"\" || slashParts[1] == \"\" {\n\t\treturn nil, false, nil\n\t}\n\tif !parser.IsValidGitHubIdentifier(slashParts[0]) || !parser.IsValidGitHubRepositoryName(slashParts[1]) {\n\t\treturn nil, false, nil\n\t}\n\n\tpackagePath := strings.Trim(strings.Join(slashParts[2:], \"/\"), \"/\")\n\tif packagePath != \"\" {\n\t\tcleanedPath := path.Clean(packagePath)\n\t\tif cleanedPath == \".\" {\n\t\t\tpackagePath = \"\"\n\t\t} else if cleanedPath == \"..\" || strings.HasPrefix(cleanedPath, \"../\") {\n\t\t\treturn nil, true, fmt.Errorf(\"invalid repository package path %q: path traversal outside the repository is not allowed. Use a path relative to the repository root. Example: packages/my-package\", packagePath)\n\t\t} else {\n\t\t\tpackagePath = cleanedPath\n\t\t}\n\t}\n\n\trepoSpec := &RepoSpec{\n\t\tRepoSlug: path.Join(slashParts[0], slashParts[1]),\n\t\tPackagePath: packagePath,\n\t}\n\tif len(parts) == 2 {\n\t\trepoSpec.Version = parts[1]\n\t}\n\n\taddPackageManifestLog.Printf(\"Parsed repository package spec %q as repo=%s path=%q version=%q\", spec, repoSpec.RepoSlug, repoSpec.PackagePath, repoSpec.Version)\n\treturn repoSpec, true, nil\n}\n\nfunc joinRepositoryPackagePath(packagePath, relativePath string) string {\n\tif packagePath == \"\" {\n\t\treturn filepath.ToSlash(relativePath)\n\t}\n\treturn filepath.ToSlash(filepath.Join(packagePath, relativePath))\n}\n\nfunc stringValue(value any) (string, bool) {\n\ts, ok := value.(string)\n\treturn s, ok\n}\n\nfunc isRepositoryFileNotFound(err error) bool {\n\treturn errors.Is(err, errRepositoryPackageFileNotFound)\n}\n\nfunc isRepositoryPackageManifestNotFound(err error) bool {\n\treturn errors.Is(err, errRepositoryPackageManifestNotFound)\n}\n\nfunc downloadRepositoryPackageFileFromGitHubForHost(ctx context.Context, owner, repo, path, ref, host string) ([]byte, error) {\n\taddPackageManifestLog.Printf(\"Downloading repository package file %s from %s/%s@%s (host=%q)\", path, owner, repo, ref, host)\n\tcontent, err := parser.DownloadFileFromGitHubForHost(ctx, owner, repo, path, ref, host)\n\treturn content, normalizeRepositoryPackageRemoteError(err)\n}\n\nfunc listRepositoryPackageWorkflowFilesForHost(ctx context.Context, owner, repo, ref, workflowPath, host string) ([]string, error) {\n\tfiles, err := parser.ListWorkflowFilesForHost(ctx, owner, repo, ref, workflowPath, host)\n\treturn files, normalizeRepositoryPackageRemoteError(err)\n}\n\nfunc listRepositoryPackageDirFilesForHost(ctx context.Context, owner, repo, ref, dirPath, host string) ([]string, error) {\n\tfiles, err := parser.ListDirAllFilesForHost(ctx, owner, repo, ref, dirPath, host)\n\treturn files, normalizeRepositoryPackageRemoteError(err)\n}\n\nfunc listRepositoryPackageDirFilesRecursivelyForHost(ctx context.Context, owner, repo, ref, dirPath, host string) ([]string, error) {\n\tfiles, err := parser.ListDirAllFilesRecursivelyForHost(ctx, owner, repo, ref, dirPath, host)\n\treturn files, normalizeRepositoryPackageRemoteError(err)\n}\n\nfunc listRepositoryPackageDirSubdirsForHost(ctx context.Context, owner, repo, ref, dirPath, host string) ([]string, error) {\n\tdirs, err := parser.ListDirSubdirsForHost(ctx, owner, repo, ref, dirPath, host)\n\tretu
|
|
detection
Process completed with exit code 1.
|
|
detection
ERR_SYSTEM: ❌ Detection result file not found at: /tmp/gh-aw/threat-detection/detection_result.json
|
|
detection
Process completed with exit code 2.
|
|
evals
Process completed with exit code 1.
|
|
evals
Agent execution exited with code 1
|
|
conclusion
Agent reported that it could not complete the task
|
|
agent
Replaced non-writable file for secret redaction: /home/runner/work/_temp/gh-aw/safeoutputs/outputs.jsonl
|
|
agent
Replaced non-writable file for secret redaction: /tmp/gh-aw/mcp-logs/safeoutputs/server.log
|
|
agent
Replaced non-writable file for secret redaction: /tmp/gh-aw/sandbox/firewall/logs/cli-proxy-logs/access.jsonl
|
|
agent
Replaced non-writable file for secret redaction: /tmp/gh-aw/aw-log-actionlint-schedule-wizard-debug-logging.patch
|
|
agent
Removed symbolic link before artifact upload: /tmp/gh-aw/latest
|
|
evals
Removed symbolic link before artifact upload: /tmp/gh-aw/latest
|
|
safe_outputs
⚠️ report_incomplete: Accidentally submitted the create_pull_request call with a placeholder title/body while testing a permission denial; the per-run limit (1) is now exhausted so the correct content could not be sent.
|
|
conclusion
Failed to post comment to detection runs issue: Commenting is disabled on issues with more than 2500 comments - https://docs.github.com/rest/issues/comments#create-an-issue-comment
|
|
conclusion
Threat detection produced no security verdict. Review the detection job logs before trusting the agent outputs.
|
|
agent
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
|
|
detection
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
|
|
evals
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
|
Artifacts
Produced during runtime
| Name | Size | Digest | |
|---|---|---|---|
|
agent
|
690 KB |
sha256:ac92183acf94014c8a07f27b45a6a62b3b875f2e90f90e403cb3beabe38a70c5
|
|
|
agent-output-fallback
|
8.35 KB |
sha256:f775de70908bd481acc8bc5763d4cd5a939ea16d5c5d666c1a488593d9ae42b7
|
|
|
cache-memory
|
25.1 KB |
sha256:53b700d30c5365daca3b55dbe45edb91405458440adebcc12dfbc7af87b2c93f
|
|
|
detection
|
18.2 KB |
sha256:84e11259f34fdebdd2910deafa02c5813e1bc525de5f57d32e2136c1f249c2e7
|
|
|
evals
|
638 Bytes |
sha256:e2e40f7e6463ec6ae6970f066c20eb83ae03a4a6397389fa2ac243e8448d700e
|
|
|
info
|
606 Bytes |
sha256:d849f87f8add5ff44e33c360721aebeb8df695f94d927f005ed7719210b3ee59
|
|
|
safe-outputs-items
|
601 Bytes |
sha256:50baa65507447766524b40f01c923341522b87cfbc5762632a733562b1eb701f
|
|
|
usage
|
130 KB |
sha256:bf1ad8418d6cb769a70600d70b7ce592c9edc94e196f39ba128bd1eacccb9b2d
|
|